#laravel #eloquent
#laravel #красноречивый
Вопрос:
Я пытаюсь получить операцию, которая как PK id = 2
$operations = Operation::findOrFail(2)->get();
Эта строка должна сделать свое дело, но в результате я получаю все свои 6 операций…
Конечно, мои другие 5 имеют значение ID от 1 до 6, они не совпадают.
Я проверил, что Operation — это модель без пользовательской конфигурации, а таблица операций была создана путем миграции и имеет идентификатор как PK…
Конечно, я мог бы изменить его с помощью другого красноречивого запроса, но это должно сработать, и я хотел бы знать, почему он терпит неудачу.
Чего мне не хватает?
Комментарии:
1.
$operations = Operation::findOrFail(2);
он предоставит вам экземпляр модели. Гдеget()
дает вам коллекцию. Поэтому удалитеget()
,
Ответ №1:
удалить ->get()
это должно быть
$operations = Operation::with('meters')->findOrFail(2);
get()
предоставляет вам коллекцию, в которую входят все данные Operation
, чтобы получить один экземпляр, который вы должны удалить get()
Комментарии:
1. Да, действительно, моя проблема в том, что я должен добавить к нему -> with(‘meters’) , поэтому мне нужен Eloquent Builder, а не результат ->get()
2. Решение таково: $operations = Operation::with(‘meters’)-> findOrFail(2);