7

我到底想做的是,我想根据请求的参数在 laravel 5.3 中进行动态查询,所以在请求中我将获取列名然后过滤该查询,我不知道我想要处理数据的表。所以,我的问题是如何确定该查询的表?或者我应该将表和相应的列存储在一个数据库的表中,并将请求的参数与该表匹配,以便我将获得表名并能够放入该查询?

但我认为这会花费我的处理费用?所以这就是我发布这个问题的原因。请帮助我找到适合我动态查询要求的最佳方案?

更新

请求将是这样的

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

所以这是我的请求,表名和相关列在一个表中。

4

1 回答 1

8

只需使用查询构建器

$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();
}
于 2016-12-24T23:16:54.533 回答