Я хочу запросить динамически на основе полезной нагрузки (json) из базы данных.Eloquent Query Динамически основанный на json
Пример:
$data = [{"key":"age","relation":">","value":"15"},{"operator":"OR"},{"key":"age","relation":"<=","value":"20"}]
Я хочу сделать запрос на основе этой полезной нагрузки.
Прямо сейчас, что я делаю это:
$query = User::all();
$payload = json_decode($data, true);
foreach($payload as $value){
if ($value['key'] == 'age') {
$query = $query->where('birthday', $value['relation'], Carbon::now()->subYears($value['age'])->format('Y-m-d');)
}
if($value['key'] == 'gender'{
$query = $query->where('gender', $value['relation'], $value['gender']);
}
}
Проблема да он может работать, но я не думаю, что это лучший подход. Я не получаю никакого решения использовать ключ «operator». Использование оператора должно изменить where
на orWhere
.
Любое решение или советы, чтобы заставить его динамически звонить так. Я хочу, чтобы моя колонка в DB была аккуратной и простой. Я могу думать только так.
Спасибо!
Если вы ожидаете, что запросы будут прямолинейными или простыми, вы должны предпочесть писать необработанный запрос в этом случае. Это будет более чистым. –
@VishalSh спасибо за предложение. любой пример для сырого запроса в моем случае? – ssuhat
@SSuhat Вы отправляете оператор 'AND' также в полезную нагрузку? – z3r0ck