我想根据数据库中的有效负载(json)动态查询。基于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']);
}
}
问题是,是的,它可以工作,但我不认为这是最好的办法。我没有得到任何解决方案来使用“操作员”键。操作员的使用是将where
更改为orWhere
。
任何解决方案或提示,使它像这样动态调用?我希望我的专栏在数据库整洁而简单。我只能这样想。
谢谢!
如果您希望查询简单直接,那么在这种情况下您应该更愿意编写原始查询。这将会更加干净。 –
@VishalSh谢谢你的建议。在我的情况下原始查询的任何示例? – ssuhat
@SSuhat你是否发送'AND'运算符以及有效载荷? – z3r0ck