Когда я повторяю свой запрос, используя dd($query->toSql()); Я получаю:
"select `item_num`, `item_name`, `primary_color`, `content`
where (`item_name` NOT LIKE ? and `item_name` NOT LIKE ? and `item_name` NOT LIKE ? )
and `primary_color` = ? or `primary_color` = ? or `primary_color` = ?
order by `item_name` asc ◀"
Мне нужны круглые скобки (основной цвет= ? orосновной_цвет= ? orосновной_цвет = ?), чтобы запрос выглядел так:
"select `item_num`, `item_name`, `primary_color`, `content`
where (`item_name` NOT LIKE ? and `item_name` NOT LIKE ? and `item_name` NOT LIKE ? )
and (`primary_color` = ? or `primary_color` = ? or `primary_color` = ? )
order by `item_name` asc ◀"
Вот мой код:
$query = DB::table('my_table');
$query = $query->select(array('item_num', 'item_name', 'color', 'content'));
$query = $query->where($this->filterArr);
$cc = count($myArr);
$ii = 0;
foreach ($myArr as $key => $value) {
$myArr = explode(" ", $value);
if($ii==0)
$query = $query->where( function(){ $column, '=', $myArr[0]);
else
$query = $query->orWhere($column, '=', $myArr[0]);
if(count($myArr)>1){
foreach($myArr as $filter){
if ($key=='collection'){
$filter = str_replace("-", " ", $filter);
}
$query = $query->orWhere($column, '=', $filter);
}
}
}
$ii++;
}
$query = $query->orderBy('item_name', 'asc')
->simplePaginate(50);
из-за этого я получаю неожиданную синтаксическую ошибку, ',' из этой строки $query = $query->where( function(){ $column, '=' , $myArr[0]);
Кто-нибудь может помочь, добавив круглые скобки вокруг оператора WHERE, пожалуйста.
Спасибо.
edit $myArr — набор фильтров
Array (
[color] => blue
[color] => purple
[material] => slick granite
)
Подробнее здесь: https://stackoverflow.com/questions/636 ... avel-model