Задача Ларавела с отношением, ведущим к нулю - PullRequest
0 голосов
/ 31 мая 2019

У меня возникли проблемы с отношениями Laravel, когда пара идентификаторов моделей идентична, но у другого начальный ноль, а у другого нет.

Product ID | Productname  
-----------|------------ 
012345     | Product A
12345      | Product B

Если эти отношения загружены в одном запросе, толькопервый будет возвращен, а другой - нет.

Столбцы базы данных являются строками, и в модели Продукта для меня было установлено увеличение на false и приведение атрибута id к строке.Неужели стремительная загрузка Laravel не учитывает лидирующие нули?

Я не могу изменить идентификаторы продуктов с лидирующими нулями.

Заранее спасибо!

1 Ответ

0 голосов
/ 31 мая 2019

Я просто запускаю тест на локальной установке laravel и не могу воспроизвести проблему.

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

Например, может быть, вы получите идентификатор из запроса:

$productId = $request->get('product_id');

В этот момент $productId считается целым числом, поэтому если вы используете productId для запроса вашей БД, начальный ноль будет удален.

Вы должны быть уверены, что в течение жизненного цикла вашего запроса эта переменная никогда не преобразуется в целое число.

Вы можете протестировать правильный запрос, используя tinker и получив ваши продукты вручную:

Product::find('012345');
Product::find('12345');
...