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