1

正確に何をしたいのですか、私は要求されたパラメータに基づいてlaravel 5.3で動的クエリを作成したいので、リクエストではカラム名を取得してそのクエリをフィルタリングします。データ。 私の質問は、そのクエリのテーブルを決定する方法ですか? またはテーブルとそれぞれの列を1つのデータベースのテーブルに格納し、要求されたパラメータをそのテーブルと照合して、テーブル名を取得してそのクエリを配置できるようにする必要がありますか?laravel 5.3で動的クエリを作成する方法は?

しかし、これは処理に費用がかかりますか?だからこそ私はこの質問を投稿します。私は動的クエリのための私のrequirmentに適合する最良のシナリオで私を助けてください?

更新

要求はそう、これは私の要求とテーブル名で、関連する列が一つのテーブルにあるこの

{ 
    "col": ['fname', 'lname'], 
    "offset": 1, 
    "limit": 25, 
    "order": [ASC, fname, lname], 
    "filter": [ 
    { 
     "col": "id", 
     "op": "=", 
     "val": 8 
    } 
    ] 
} 

のようになります。

+1

データベースに保存されているデータの種類、期待しているフィルタ要求の種類、および正常に動作しているときのデータの表示方法を教えてください。 –

答えて

4

ただquery buildersを使用してください。

$query = DB::table($tableName); 

// ...some logic... 

foreach ($filters as $filter) { 
    $query->where($filter['col'], $filter['op'], $filter['val']); 
} 

// ...more logic... 

if (isset($limit)) { 
    $query->limit($limit); 
} 

if (isset($columns)) { 
    // get desired columns 
    $records = $query->get($columns); 
} else { 
    $records = $query->get(); 
} 
+0

要求されたパラメータに基づいてテーブルを決定する方法を教えてください。リクエストではカラムとフィルタしかないので、すべての人に一般的にしたいのです。だからテーブル名の演劇があります。 – SaMeEr

+0

テーブルとそれぞれのカラム名をデータベースに格納し、要求されたパラメータをそのカラムに一致させて、そのテーブル名を取得する必要があります。それは全体のパフォーマンスに影響を及ぼしますか? – SaMeEr

関連する問題