$operations = Операция ::findOrFail(2)-> get(); возвращает 6 результатов

#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);