用简单的英语:我有三张桌子。 subscription_type
email_subscription
有许多email
s,其中有email_subscription
个。{
我正在尝试选择具有特定subscription_type
的所有email
条记录,这些记录也没有status
个Held
的{{1}}条记录{1}}。
我坚持使用的特定位只返回email_subscriptions
,其中emails
为零(在上面描述了附加的where子句)。
使用Eloquent,我已经能够得到一些方法,但我不知道如何选择关系计数为零的所有记录:
$subscriptionsWithNoCorrespondingHeldEmail = EmailSubscriptions::whereHas('subscriptionType', function($q) {
$q->where('name', 'New Mission');
})-; // What do I chain here to complete my query?
此外,这是否可以使用Eloquent或者我是否需要使用Fluent语法?
答案 0 :(得分:6)
您可以使用has()
方法查询关系存在:
has('emails', '=', 0)
例如:
$tooLong = EmailSubscriptions::whereHas('subscriptionType', function($q) {
$q->where('name', 'New Mission');
})->has('emails', '=', 0)->get();
修改强>
您可以使用whereHas()
和whereDoesntHave()
方法执行更多高级查询:
$tooLong = EmailSubscriptions::whereHas('subscriptionType', function($q) {
$q->where('name', 'New Mission');
})
->whereDoesntHave('emails', function ($query) {
$query->where('status', '=', 'whatever');
})->get();
答案 1 :(得分:0)
好的,我对你的问题的看法是你希望有一个
的所有电子邮件特定的subscription_type,零(0)关联和状态=状态
如果是,那么你可以在where语句中使用数组。 像:
$q->->where(array('status' => 'status','subscription_type'=>'what ever you want));