Я создаю приложение в Laravel 5, и мне нужно убедиться, что одна из моих таблиц сможет выполнять поиск FULLTEXT.
Я хотел бы узнать номер версии MySQL (гарантируя, что он по крайней мере 5.6.10 или выше), чтобы я мог переключить движок в MyISAM в файле миграции для данной таблицы, если это условие терпит неудачу.
Кажется, я не могу найти какие-либо документы о том, как обращаться к информации сервера MySQL с помощью PDO, что Laravel использует из коробки.
Любая помощь приветствуется.
Почему бы просто не запустить select version();
запрос, который даст вам правильный результат независимо от того, какой API вы используете?
echo $pdo->query('select version()')->fetchColumn();
Вы можете использовать PDO::getAttribute(PDO::ATTR_SERVER_VERSION)
http://php.net/manual/en/pdo.getattribute.php
Немного улучшенная версия ответа Винса Кронлейна
function version($min){ $pdo = DB::connection()->getPdo(); $version = $pdo->query('select version()')->fetchColumn(); preg_match("/^[0-9\.]+/", $version, $match); $version = $match[0]; return (version_compare($version, $min) >= 0); }
Применение:
if(version('5.7.0')){ //do someting }
Я написал небольшой метод в файле миграции:
protected static function version() { $pdo = DB::connection()->getPdo(); $version = $pdo->query('select version()')->fetchColumn(); (float)$version = mb_substr($version, 0, 6); if ($version < '5.6.10') { return false; } return true; }
Работает в обаянии. Спасибо за комментарии.