Как сделать динамический запрос в laravel 5.3?

Что именно я хочу сделать, так это сделать динамический запрос в laravel 5.3 на основе запрошенных параметров, поэтому в запросе я получу имена столбцов, а затем фильтры для этого запроса, и я не знаю таблиц, из которых я хочу обрабатывать данные. Итак, мой вопрос: как определить таблицы для этого запроса? или я должен хранить таблицу и соответствующие столбцы в одной таблице базы данных и сопоставлять запрошенные параметры с этой таблицей, чтобы я получил имя таблицы и смог ввести этот запрос?

Но я думал, что это будет стоить моей обработки? поэтому я публикую этот вопрос. пожалуйста, помогите мне с лучшим сценарием, который будет соответствовать моему требованию для динамического запроса?

Обновить

запрос будет таким

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

так что это мой запрос, а имя таблицы и связанные столбцы находятся в одной таблице.


person SaMeEr    schedule 24.12.2016    source источник
comment
Можете ли вы привести несколько примеров типов данных, которые есть в вашей базе данных, типов запросов на фильтрацию, которые вы ожидаете, и того, как вы ожидаете, что данные будут выглядеть, когда они будут работать должным образом?   -  person Carter Fort    schedule 25.12.2016


Ответы (1)


Просто используйте конструкторы запросов.

$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();
}
person Mateusz Drost    schedule 24.12.2016
comment
Большой. Можете ли вы предложить мне, как решать таблицы на основе запрошенных параметров. Потому что в запросе у меня есть только столбцы и фильтры, но я хочу сделать их общими для всех. Так что есть игра для имен таблиц. - person SaMeEr; 25.12.2016
comment
Должен ли я хранить имена таблиц и соответствующих столбцов в базе данных и сопоставлять запрошенные параметры с этим столбцом и брать это имя таблицы? Повлияет ли это на общую производительность? - person SaMeEr; 25.12.2016