当前位置:  开发笔记 > 编程语言 > 正文

Laravel搜索不存在关系的地方

如何解决《Laravel搜索不存在关系的地方》经验,为你挑选了1个好方法。

我可以使用whereHas方法查询关系存在的位置,但现在我需要获得此结果的反函数,其结果与whereHas子句中的结果不匹配.

这是我的查询:

$query->whereHas('actions', function ($query) {
    $query->where('actions.created_at', '>', Carbon::now()->addDays(-30));
});

这可以获得过去30天内执行的操作,但我需要获取过去30天内未执行操作的内容.

看起来我需要从关系中获取max(actions.created_at)并查看该值是否超过30天,但我不确定如何以雄辩的方式执行此操作.

注意:人与动作之间的关系是1到多,因此可能会链接多个动作记录,所以我不能只是将运算符翻转为"<="



1> Amarnasan..:

记住whereHas 两个以上的参数:

$query->whereHas('actions', function ($query) {
    $query->where('actions.created_at', '>', Carbon::now()->addDays(-30));
}, '=',0);

事实上,它还有两个,但默认设置为'> ='和'1'.因此,我们在子查询中添加参数'='和'0'(或'<'和'1'以解决它的重要性),例如'所有不在操作子集中的操作30天).

whereHas方法:http://laravel.com/api/4.1/Illuminate/Database/Eloquent/Builder.html#method_whereHas

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有