我是一个朋友的系统,但偶然发现了一个问题。 我有3个型号(customerCard,customerCardComment和customerCardFollowup)。
如果您看到下面的图片以了解我想要实现的目标,那就更好了。如你所见,我试图获得一个结果,我得到一个customerCard模型,其中售出的字段等于0,而customerCard模型没有customerCardComment模型,其中类型字段等于1,2或3,并且customerCard也没有任何customerCardFollowup。
数据库: customer_cards customer_card_comments customer_card_followups
评论和后续表都与customer_cards中的ID字段相关。两者都有外键customer_card_id。
有没有办法进行此查询?还是我迷路了? 提前谢谢。
答案 0 :(得分:1)
Laravel的whereHas
接受第3和第4个参数。第3个参数是针对结果集count
的比较运算符,第4个参数是要比较的number
。这将解决第一个问题:
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);
});
第三个实际上有点复杂,我需要考虑如何接近它。我现在回答是为了让你朝着正确的方向前进,并在短期内编辑并更新第3个问题的解决方案。