У меня есть три разных столбца в моей базе данных.Я хочу разрешить пользователю получать данные из этих столбцов в зависимости от его потребностей.Пользователь может выбрать выборку всех данных из всех столбцов или пользователь может выбрать конкретную информацию о столбце.
$moreWhere="";
if($request->status != 'all')
$moreWhere="['status', '=', '$request->status'],";
if($request->category != 'all')
$moreWhere = $moreWhere . "['cat', '=', '$request->cat'],";
if($request->type != 'all')
$moreWhere = $moreWhere . "['type', '=', '$request->type']";
$moreWhere = '[' . $moreWhere . ']';
$showData = sys_data::where($moreWhere)->wherebetween('date', [$request->from_date, $request->to_date])->paginate(10);
У меня проблема в том, что, когда я передаю переменную $ moreWhere в предложение «where»я получаю ошибку.
Это дает мне следующую ошибку.
Illuminate \ Database \ QueryException (42S22)
SQLSTATE[42S22]: Column not found: 1054 Unknown column
'[['status', '=', 'Yes'],['cat', '=', 'Food'],['type', '=', 'Free']]'
in 'where clause' (SQL: select count(*) as aggregate
from `sys_data` where `[['status', '=', 'Yes'],['cat', '=', 'Food'],['type', '=', 'Free']]` = ``
and `date` between 2018-09-01 and 2018-09-03)
Если я вручную добавлю
[['status', '=', 'Yes'],['cat', '=', 'Food'],['type', '=', 'Free']]
в качестве аргумента "где", например, после
sys_data::where([['status', '=', 'Yes'],['cat', '=', 'Food'],['type', '=', 'Free']])
, тогда он будет работать как шарм.
Однако то же самое, что сохраняется в переменной и присваивается «где», просто не работает.Я что-то упустил?
Извините, я новичок в Laravel и программировании, поэтому любая помощь будет принята с благодарностью.Опять же, я использую Laravel 5.6, если это актуально здесь.
Спасибо