используйте & quot; () & quot; в конструкторе запросов Fuelphp

Я хотел бы использовать «()» в sql Fuelphp, как это.

select * from shop where (item1=$item1 or item2=$item1) and flag=on;

Я пытался выразить это так;

$shop_query = DB::select()->from('shop');
$shop_query->where(function($shop_query){
$shop_query->where('item1','=',$item1)
->or_where('item2','=',$item1);
$shop_query ->and_where('flag','=','on');

Тем не менее, это показывает ошибку: undefined index item1.$item1и, конечно, это имеет значения.

Как я мог решить это?

3

Решение

Вы можете использовать группировку ->where_open/close метод построителя запросов:

public static function whatever($item1, ... the rest of your args)
{
$shop_query = DB::select()
->from('shop')
->where('flag', 'on')
->and_where_open()
->where('item1', $item1)
->or_where('item2', $item1)
->and_where_close()
->execute()->as_array(); // just change this to whatever you need

return $shop_query;
}

Это превращается в:

SELECT * FROM `shop` WHERE `flag` = 'on' AND (`item1` = '$item1' OR `item2` = '$item1')
6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]