Мне нужно запустить запрос с collate utf8_bin
следующим образом:
SELECT * FROM `table` WHERE `field`='value' collate utf8_bin;
Это строго для сценария администратора, и я не хочу обновлять сам набор символов, только для конкретного запроса.
Могу ли я сделать это с помощью Eloquent ORM или мне нужно написать этот запрос?
Поскольку вы можете настроить драйвер MySQL, чтобы использовать его:
'mysql' => array( 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'database', 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ),
Вы можете создать другое соединение для своего конкретного запроса:
'mysql-collation' => array( 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'database', 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'collation' => '<your collation>', 'prefix' => '', ),
И используйте это соединение по вашему запросу:
$users = DB::connection('mysql-collation')->select(...);
РЕДАКТИРОВАТЬ:
На модели вы, вероятно, сможете установить соединение таким образом:
$posts = new Word; $posts->setConnection('mysql-collation'); $posts->where(...);
Вы можете сделать это таким образом, если он решает вашу проблему:
SomeModel::whereField($value)->orderByRaw("name COLLATE utf8_bin ASC")->get();