1

我想要做的是,我想根據請求的參數在laravel 5.3中進行動態查詢,因此在請求中我將獲取列名稱,然後篩選該查詢,並且我不知道要從哪個表中處理數據。 所以,我的問題是如何確定該查詢的表? 或者我應該在一個數據庫的表中存儲表和相應的列,並將請求的參數與該表匹配,以便我可以獲取表名並能夠放入該查詢?如何在laravel 5.3中進行動態查詢?

但我認爲這會花費我的處理?所以這就是我發佈這個問題的原因。請以最適合我的動態查詢需求的最佳場景幫助我?

更新

請求將是這樣

{ 
    "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