我可以使用whereHas方法查询关系存在的位置,但现在我需要获得此结果的反函数,其结果与whereHas子句中的结果不匹配 .
这是我的查询:
$query->whereHas('actions', function ($query) {
$query->where('actions.created_at', '>', Carbon::now()->addDays(-30));
});
这可以获得过去30天内执行的操作,但我需要获取过去30天内未执行操作的内容 .
看起来我需要从关系中获取max(actions.created_at)并查看该值是否超过30天,但我不确定如何以雄辩的方式执行此操作 .
注意:人与动作之间的关系是1到多,因此可能会链接多个动作记录,所以我不能只将操作符翻转为“<=”
3 回答
记住
whereHas
有两个以上的参数:事实上,它还有两个,但默认设置为'> ='和'1' . 因此,我们添加参数'='和'0'(或'<',以及它重要的'1'),以便在子查询中对其进行转换,例如'不包含在少于0的操作子集中的所有操作30天) .
whereHas
方法:http://laravel.com/api/4.1/Illuminate/Database/Eloquent/Builder.html#method_whereHas试试这个[伪代码]:
然后,您可以在视图中使用
$exceedingThirty
数组 .OR
试试这个:
看,如果这有帮助 .
你能不能把你的查询地址改为小于或等于?