Laravel красноречивый, где метод дает без учета регистра - PullRequest
0 голосов
/ 06 июня 2018

В моем проекте laravel я использую шаблон репозитория.Я создал следующий метод, чтобы получить бренд по его имени из таблицы брендов.

public function getBrandByName($name){
   return $this->model->where('name','=',$name)->first();
}

В таблице брендов у меня есть запись с именем = "BrandOne".Но когда я вызываю метод с чувствительностью к регистру как getBrandByName ('brandone') или getBrandByName ('BrandOne') , это дает мне строку. Но мне нужно только получить запись счувствительность к регистру.Как я могу это сделать?

Спасибо

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

используйте DB::raw() метод, а затем:

public function getBrandByName($name){
   return $this->model->where(DB::raw("BINARY `name`"), $name)->first();
}

надеюсь, это поможет

0 голосов
/ 06 июня 2018

Чувствительность к регистру - это то, что контролируется на уровне базы данных. сопоставление , которое вы используете в своих таблицах, определяет, как символы обрабатываются и упорядочиваются.При сопоставлении без учета регистра символы верхнего и нижнего регистра обрабатываются одинаково.

Если вы используете MySQL, если у вас есть сопоставление, оканчивающееся на _ci, это означает, что вы используете регистр без учета регистрапараметры сортировки.

Вы можете установить параметры сортировки, которые хотите использовать в настройках базы данных Laravel:

    'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,
    ],

Здесь вы можете изменить collation на регистр с учетом регистра и один разваши таблицы были созданы с помощью этого нового сопоставления, MySQL будет обрабатывать символы верхнего и нижнего регистра по-разному.

При сопоставлении, заканчивающемся _cs или _bin, обычно учитывается регистр.

Обратите вниманиеоднако это изменение не вступит в силу до тех пор, пока вы не перенастроите свою базу данных (или не измените параметры сортировки вручную), поскольку параметры сортировки устанавливаются при создании таблиц.


Можно выполнить регистрчувствительное сравнение с использованием MySQL, но я не думаю, что Laravel поддерживает его из коробки, поэтому вам придется использовать необработанный запрос для него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...