Вызов функции-члена где () в массиве - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть следующая хранимая процедура MySQL "Sel_All_Observation_SP": -

    BEGIN
    SELECT Observations_TBL.observation_id, Observations_TBL.number, Observations_TBL.date, Observations_TBL.status, Observations_TBL.content, Observations_TBL.recommendation, Observations_TBL.remark, Users_TBL.User_name, Type_Name_TBL.Type_Name, Supervisors_TBL.supervisor_name
    FROM ((Observations_TBL INNER JOIN Supervisors_TBL ON (Supervisors_TBL.supervisor_id = Observations_TBL.supervisor_id) AND (Observations_TBL.supervisor_id = Supervisors_TBL.supervisor_id)) INNER JOIN Type_Name_TBL ON (Observations_TBL.Type_Name_ID = Type_Name_TBL.Type_Name_ID) AND (Observations_TBL.Type_Name_ID = Type_Name_TBL.Type_Name_ID)) INNER JOIN Users_TBL ON (Users_TBL.User_ID = Observations_TBL.user_id) AND (Observations_TBL.user_id = Users_TBL.User_ID);

END

Я вызываю вышеуказанную процедуру в laravel, используя построитель запросов laravel: -

DB::select('call Sel_All_Observation_SP()')

Вышевозвращает результат в виде массива.

Я пытаюсь использовать оператор where в запросе выше: -

$observations = DB::select('call Sel_All_Observation_SP()')->where('user_id',1);

Возвращается ошибка: -

Symfony \Component \ Debug \ Exception \ FatalThrowableError (E_ERROR)

Вызов функции-члена где () в массиве

Я даже пытался преобразовать массив в коллекцию следующим образом: -

$observations = collect(DB::select('call Sel_All_Observation_SP()')->where('user_id',1)->get());

Возвращает ту же ошибку

1 Ответ

0 голосов
/ 03 декабря 2018

Поскольку вы не выбираете таблицу, оператор where не будет работать.Что касается кода collect, попробуйте немного изменить синтаксис, чтобы он читал:

$observations = collect(DB::select('call Sel_All_Observation_SP()'))->where('user_id',1);

Приведенный выше код помещает данные из хранимой процедуры в коллекцию.Затем вы можете использовать функцию where для фильтрации результатов.Не нужно добавлять ->get() в конце.

...