Eloquent findOrFail () -> get () - PullRequest
0 голосов
/ 11 мая 2018

Немного ошибки новичка, я знаю, но могу я спросить ...

Почему

findOrFail()->get();

или

findOrFail()->first();

Возвращает всю коллекцию,против того, чтобы просто потерпеть неудачу?Я знаю правильный синтаксис:

findOrFail();

Однако случайный -> get () в конце вызвал у меня кошмар!

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

И findOrFail, и firstOrFail выдают исключение, если модель не найдена.Это поведение по умолчанию: https://laravel.com/docs/5.6/eloquent#retrieving-single-models

0 голосов
/ 11 мая 2018

Метод findOrFail($id) возвращает одну модель путем поиска в столбце id и выдает исключение - ModelNotFoundException, если модель не найдена. Метод get() возвращает коллекцию моделей / строк.

Если вам нужно найти и ожидать только одну модель с помощью идентификатора, используйте только метод findOrFail(). Вам не нужно использовать get() в конце. Вы можете поймать исключение и показать соответствующее сообщение в ответ. Также вам не нужно использовать метод first() в этом случае, потому что метод findOrFail() вернет только один результат модели.

Если вы ожидаете коллекцию моделей, используйте метод get() в конце. Если результата нет, вы получите пустую коллекцию или массив, и в этом случае не будет выброшено исключение, так как результатом будет пустая коллекция / массив.

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