firstOrFail()
функция возвращает первый найденный элемент, но если элемент не существует, выдается исключение ModelNotFoundException
.Я не знаю, почему вы хотите разместить здесь пустой массив, но это решение для вашего случая:
$test = Test::where('level', 'medium')
->where('lesson_id', $lesson->id)
->first(); // this returns null if item doesn't exist
$test = $test ?? []; // this turns null to empty array
Лучшее решение - взять null
из результата запроса и проверить его, если.Пример:
$test = Test::where('level', 'medium')
->where('lesson_id', $lesson->id)
->first();
if (!$test) {
// do this, if item doesn't exist
}
или как это:
try {
$test = Test::where('level', 'medium')
->where('lesson_id', $lesson->id)
->firstOrFail();
} catch (\Illuminate\Database\Eloquent\ModelNotFoundException $exception) {
// do this, if item doesn't exist
}