0

クエリの作成とフィルタリングに使用したいものを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'
    ),
    ...
) 
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 に答える