Я пытаюсь вернуть одну строку из таблицы на основе первичного ключа.Laravel - Eloquent преобразует параметр запроса в целое число перед сравнением
$product = Product::where('id', '=', $idOrSKU)
->orWhere('sku', '=', $idOrSKU)
->take(1)->get();
По какой-то причине $idorSKU
преобразовывается в и (int)
прежде, чем происходит сравнение. Например, когда $isOrSKU = "9dfghfd"
, возвращается строка с ID = 9. Почему это? Он ничего не должен возвращать! Может кто-нибудь объяснить это?
Вот соответствующая схема таблицы
| id | int(10) unsigned | NO | PRI | NULL
| name | varchar(255) | NO | | NULL
| sku | varchar(255) | NO | | NULL
Можете ли вы подтвердить, что SQL в настоящее время выполняются, делая ' dd (end (DB :: getQueryLog())); 'после вашего' get() '? – Unnawut
он должен корректно проверять $ isOrSKU, вы используете кастинг любого типа? перед запросом или он преобразуется в int до того, как в вашем запросе нет проблем –
Это столбец int, что вы ожидаете, когда попытаетесь найти строку на нем? –