Построитель запросов получает модальный экземпляр

Я использую 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();

Разница между этими методами объясняется здесь.

Другие вопросы по тегам