Php Laravel雄辩的困难关系查询

Php Laravel雄辩的困难关系查询,php,mysql,laravel,orm,eloquent,Php,Mysql,Laravel,Orm,Eloquent,我是一个系统的朋友,但偶然发现了一个小问题。 我有3个模型customerCard、customerCardComment和customerCardFollowup 如果你看到下面的图片,了解我想要实现的目标,那就更好了。如您所见,我试图得到一个结果,其中我得到一个customerCard模型,其中Seld字段等于0,customerCard模型没有customerCardComment模型,其中type字段等于1、2或3,customerCard也没有任何customerCardFollowu

我是一个系统的朋友,但偶然发现了一个小问题。 我有3个模型customerCard、customerCardComment和customerCardFollowup

如果你看到下面的图片,了解我想要实现的目标,那就更好了。如您所见,我试图得到一个结果,其中我得到一个customerCard模型,其中Seld字段等于0,customerCard模型没有customerCardComment模型,其中type字段等于1、2或3,customerCard也没有任何customerCardFollowup

数据库: 客户卡 客户卡意见 客户卡跟进

注释和后续表都与客户卡中的ID字段相关。两者都有外键客户卡id

有没有办法做这个查询?还是我迷路了? 提前谢谢

Laravel's whereHas接受第三个和第四个参数。第三个参数是与结果集计数的比较运算符,第四个参数是要进行比较的数字。这将解决第一个问题:

CustomerCard::where(function($query){
    $query->where('sold', 0)
         ->whereHas('customerCardComment', function($query){
             return $query->whereIn('type', [1,2,3]);
         }, '=', 0);
});
接下来,您可以使用->has计算从关系返回的记录数,这将解决第二个问题:

CustomerCard::where(function($query){
    $query->where('sold', 0)
         ->whereHas('customerCardComment', function($query){
             return $query->whereIn('type', [1,2,3]);
         }, '=',  0)
         ->has('customerCardFollowup', '=', 0);
});

第三个问题实际上有点复杂,我需要考虑如何更接近这个问题。我现在就回答,让您朝正确的方向前进,并用第三个问题的解决方案编辑和更新帖子。

请不要将代码作为图片发布!另外,请提供您的模型的粗略数据结构,或者普通查询的JSON输出,在这里我们可以看到所有关系和属性。我明白了,这为我解决了很多问题,事实上,现在我知道了这一点。我不知道我可以用whereHas进行关系查询。谢谢