Как сохранить элемент в переменной из массива в Laravel? - PullRequest
0 голосов
/ 11 января 2020

Я хочу сохранить «область» в переменной $area из $school_info array. Используя $area, я хочу, чтобы более 3 строк хранились в 3 различных массивах, таких как: $school_info1, $school_info2, $school_info3.

public function schooldetailviewid($id)
{
    $school_id = $id;
    $school_info = DB::table('school_infos')->where('school_id', '=', $school_id)->get();
    $area = $school_info->area;

    // recomendation start
    $school_info1 = DB::table('school_infos')->where('area', '=', $area)->get();
    $school_info2 = DB::table('school_infos')->where('area', '=', $area)->get();
    $school_info3 = DB::table('school_infos')->where('area', '=', $area)->get();
    // recomendation end

    return view('schooldetail', compact('school_info', 'school_info1', 'school_info2', 'school_info3'));
}

Проблема: не работает хранение элементов, а также еще 3 строки не извлекаются! Я пытаюсь создать простую систему рекомендаций.

Ошибка

Исключение Свойство [область] не существуют в этом экземпляре коллекции.

1 Ответ

1 голос
/ 11 января 2020

.get() возвращает массив объектов, чтобы получить только один объект. .first():

$school_info = DB::table('school_infos')->where('school_id', '=', $school_id)->first();
$area = $school_info->area;

В противном случае вам необходим доступ к первому элементу массива:

$school_info = DB::table('school_infos')->where('school_id', '=', $school_id)->get();
$area = $school_info[0]->area;
...