Построитель запросов получает модальный экземпляр
Я использую Laravel 5.5.
Я пытаюсь получить экземпляр объекта с помощью Query Builder of Laravel.
public function functionName(Request $request) {
$seance = Seance::where('id_seance', '=', $request->idSeance)->get();
return $seance->type_seance;
}
Моя модель: Seance(id_seance, type_seance, capacite_seance, niveau_seance, avec_coach, date_seance, heure_seance)
,
Однако я получаю эту ошибку:
Исключение: свойство [type_seance] не существует в этом экземпляре коллекции
Спасибо за помощь!
3 ответа
Get()
метод возвращает объект коллекции, это как массив, вам нужно использовать first
Способ получения первого объекта:
public function functionName(Request $request) {
$seance = Seance::where('id_seance', '=', $request->idSeance)->first();
return $seance->type_seance;
}
Вы также можете использовать метод find(), но id_seance
должен быть первичным ключом вашей таблицы:
$seance = Seance::find($request->idSeance);
return $seance->type_seance;
При использовании get()
метод, он вернет collection
а не экземпляр модели. Я предлагаю использоватьfirst()
метод вместо.
Еще лучше, используйтеSeance::find($request->idSeance)
или же Seance::findOrFail($request->idSeance)
, Это предполагает, что вы правильно определили свой первичный ключ в своей модели.
Использование first()
вместо get()
получить объект вместо коллекции объектов:
$seance = Seance::where('id_seance', $request->idSeance)->first();
Разница между этими методами объясняется здесь.