0

如果我在数据库标准中存储我想用来构建和过滤查询的内容 - 如何使用 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'
    ),
    ...
) 
4

1 回答 1

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;
}

http://laravel.com/docs/database/fluent

于 2012-12-27T20:44:20.200 回答