【问题标题】:How to make dynamic query in laravel 5.3?如何在 laravel 5.3 中进行动态查询?
【发布时间】:2017-05-10 01:44:04
【问题描述】:

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

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

更新

请求会是这样的

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

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

【问题讨论】:

  • 您能否提供一些示例,说明您数据库中的数据种类、您期望的过滤器请求种类以及您期望数据在正常工作时的样子?

标签: laravel laravel-5.3 laravel-query-builder laravel-eloquent


【解决方案1】:

只需使用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();
}

【讨论】:

  • 太棒了。你能建议我如何根据请求的参数来决定表格吗?因为在请求中我只有列和过滤器,但我想让它对所有人通用。所以有表名的游戏。
  • 我是否应该在数据库中存储表和相应的列名,并将请求的参数与该列匹配并取该表名。?会不会影响整体表现?
猜你喜欢
  • 2021-06-22
  • 2017-11-24
  • 1970-01-01
  • 2017-05-30
  • 2022-01-16
  • 2017-04-26
  • 2020-06-01
  • 1970-01-01
  • 2017-04-22
相关资源
最近更新 更多