我可以使用whereHas方法查询在哪里存在关系,但是现在我需要获得该结果的反函数,其中结果与whereHas子句中的结果不匹配。
这是我的查询:
$query->whereHas('actions', function ($query) {
$query->where('actions.created_at', '>', Carbon::now()->addDays(-30));
});
这会得到最近30天内未执行的操作,但是我需要获取最近30天内未执行的操作。
似乎我需要从关系中获取max(actions.created_at)并查看该值是否> 30天前,但是我不确定如何才能 Eloquent 地做到这一点。
注意:人与 Action 之间的关系是一对多,因此可能会有多个 Action 记录链接,所以我不能仅仅将运算符翻转为“
最佳答案
记住whereHas
有两个以上的参数:
$query->whereHas('actions', function ($query) {
$query->where('actions.created_at', '>', Carbon::now()->addDays(-30));
}, '=',0);
实际上,它还有两个,但默认情况下它设置为'> ='和'1'。因此,我们添加了参数'='和'0'(或重要的是'
whereHas
方法:http://laravel.com/api/4.1/Illuminate/Database/Eloquent/Builder.html#method_whereHas关于php - Laravel搜索不存在关系的地方,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34066175/