作为我上一篇post中的后续问题,当您拥有嵌套的WHERE
数据时,我无法弄清楚如何使用json
子句。请参阅我的上一篇post作为对此的参考。
所以,我在模型中使用关系生成了这种数据:
[
{
"id":1,
"name":"South Luzon",
"branches":[
{
"id":1,
"machinenum":108,
"name":"Alaminos",
"region_id":1,
"user":{
"id":52,
"name":"",
"email":"baic@alaminosbranch.addessacorp",
"role":0,
"machinenum":108,
"created_at":"2016-07-11 05:58:04",
"updated_at":"2016-07-14 09:49:00",
"pendings":[
{
"id":10,
"user_id":52,
"region":"South Luzon",
"branch":"Alaminos",
"docdate":"2016-07-14 00:00:00",
"ls_or":12345,
"por":1,
"ls_ci":12345,
"ci":2,
"ls_ch":12345,
"ch":2,
"dep":5,
"cla":0,
"grpo":3,
"si":25,
"so":62,
"sts":2,
"disb":3,
"arcm":5,
"apcm":65,
"pint":2,
"rc_cash":1,
"reason":"Test Reason Alaminos",
"created_at":"2016-07-14 09:48:55",
"updated_at":"2016-07-14 09:48:55"
}
]
}
}
我要做的是将所有regions
与branches
一起循环,然后获取每个分支的pending
。我用我的上一个SO question成功完成了循环。现在,我只想过滤创建pending
的日期。
我试图这样做:
$regions = Region::with(array('branches->user->pendings' => function($query) {
$query->where('created_at', '=', '2016-07-14 09:48:55');
}))->get();
但是我收到了这个错误:
BadMethodCallException in Builder.php line 2345:
Call to undefined method Illuminate\Database\Query\Builder::branches->user->pendings()
我也做了一些研究,但最后还是问这里。提前致谢,请不要忘记查看我的上一个SO question作为参考。
答案 0 :(得分:0)
$regions = App\Region::with(['pendings' => function ($query) {
$query->where('created_at', '=', '2016-07-14 09:48:55');
}])->get();
答案 1 :(得分:0)
在json中输出关系之前,你不能先在关系上执行此操作吗?您可以在那里构建此查询,以便json输出将是干净的。您之前的帖子有一个答案,可能会引导您找到解决方案。
答案 2 :(得分:0)
此代码似乎有效:
$regions = Region::with(['branches.user.pendings' => function($query){
$query->where('created_at', 'like', '%2016-07-12%');
}])->get();
请确认这是最佳做法还是更好的方法。