如果我在DB标准中存储我想用来构建和过滤查询的内容 - 如何使用Laravel Fluent Query Builder构建查询?也许你可以提供重构这个数组的建议来添加OR / AND以根据这些条件进行复杂的过滤?谢谢!
例如,如果我从数据库中读取这些条件并制作数组:
$array = array(
'0' => array(
'table' => 'users',
'column' => 'name',
'criteria' => 'LIKE'
'value' => 'John'
),
'1' => array(
'table' => 'groups',
'column' => 'name',
'criteria' => 'NOT LIKE'
'value' => 'Administrator'
),
...
)
答案 0 :(得分:1)
如果您确实按照自己的方式进行操作,请创建一个switch语句来设置数组索引的标志
switch ($query)
{
case 0:
$this->get_data($x);
break;
case 1:
$this->get_data($x);
break;
case 2:
$this->get_data($x);
break;
default:
Return FALSE;
}
public function get_data($x){
$value = DB::table($array[$x]['table'])
->where($array[$x]['name'], $array[$x]['criteria'], $array[$x]['value'])
->get();
Return $value;
}
但是,我根本不会这样做。我不应该将查询过滤器存储在数组中,而是应该在模型中创建它们。这将有助于提高可读性,模块化和可重用代码。
public function get_user_by_name($name){
$user = DB::table('users')->where('name', 'LIKE', '%'.$name.'%')->get();
return $user;
}
public function get_group_by_name($name, $criteria = 'LIKE'){
$groups = DB::table('groups')->where('name', $criteria, '%'.$name.'%')->get();
return $groups;
}