所以在我的表中有一个criteria
列,条件内的数据看起来像这个
{
"maxAq": 146461,
"minAq": 109839,
"validEnd": {
"date": "2018-04-04 00:00:00.000000",
"timezone": "UTC",
"timezone_type": 3
},
"acceptEnd": {
"date": "2018-04-05 00:00:00.000000",
"timezone": "UTC",
"timezone_type": 3
},
"supplierId": 3,
"validStart": {
"date": "2017-04-04 00:00:00.000000",
"timezone": "UTC",
"timezone_type": 3
},
"acceptStart": {
"date": "2017-04-05 00:00:00.000000",
"timezone": "UTC",
"timezone_type": 3
},
"distributor": 22,
"productType": "gas"
}
现在我正在尝试查询validStart
我正在使用laravel的行
查询看起来像这样
if($request->validStart !='')
$result->where('criteria->validStart->date','=',$request->validStart);
$r = $result->where('criteria->productType','=',"gas")->take(20)->get();
return Response::json($r);
所以基本上我正在努力做这样的事情
criteria->validStart->date = date
但即使有确切日期的行数很少,我的结果也是空的。
网址就像这样
price_filter_gas/?distributor=22supplierId=3&validStart=2017-04-04
如果你能检查json它确实有所有这些参数
欢迎任何建议
感谢
答案 0 :(得分:0)
您可以先将列名称指定给变量:
$col1 = 'criteria' . '->' . 'validStart' . '->' . 'date';
$col2 = 'criteria' . '->' . 'productType';
然后在where子句中使用它
$result->where($col1,'=',$request->validStart);
$r = $result->where($col2,'=',"gas")->take(20)->get();
由于Laravel在生成sql时添加引号的奇怪方式,这是我能够让它工作的唯一方法。