Почему laravel не помещает кавычки вокруг числовых запросов в поле varchar? - PullRequest
1 голос
/ 02 апреля 2019

У меня есть таблица с информацией о поставщиках.в базе данных mysql есть поле customer_number, определяемое как длина varchar 6. Для этого столбца есть индекс.

Всякий раз, когда я ищу строку в laravel, она выглядит так, как будто laravel видит критерии поиска:все цифры, такие как 12345, поэтому, когда он создает запрос mysql, он не ставит кавычки вокруг 12345. Это заставляет mysql игнорировать индекс и использовать полное сканирование таблицы, которое выполняется очень медленно.

пример поиска:

$RICPCS = \App\CustomerProductCategorySupplier::get()- 
>where('customer_number', $this->customer->delivery_account_no)- 
>where('category_number', $product->product_category)->first();

Laravel создает следующий SQL-запрос описания

select * from `customer_product_category_supplier` 
where `customer_number` = 10626 and `category_number` = 140

Mysql описания отчетов:

enter image description here

Где какЯ хочу, чтобы сгенерированный sql читал: опишите select * from customer_product_category_supplier, где customer_number = '10626' и category_number = '140'

mysql описывают отчеты:

enter image description here

Есть идеи?

1 Ответ

0 голосов
/ 02 апреля 2019

Вы можете преобразовать столбцы в строку с помощью https://laravel.com/docs/5.8/eloquent-mutators#attribute-casting

Но я думаю, что было бы разумнее хранить числа как int / float и т. Д.

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