Rea*_*ues 2 php mysql sql laravel eloquent
用简单的英语:我有三张桌子.subscription_type有很多email_subscriptions有很多emails.
我想选择所有email_subscription具有特定记录subscription_type,也没有任何相关的email记录中有一个status的Held.
我坚持的特定位只返回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?
Run Code Online (Sandbox Code Playgroud)
另外,Eloquent甚至可以实现这一点,还是需要使用Fluent语法?
您可以使用该has()方法查询关系存在:
has('emails', '=', 0)
Run Code Online (Sandbox Code Playgroud)
例如:
$tooLong = EmailSubscriptions::whereHas('subscriptionType', function($q) {
$q->where('name', 'New Mission');
})->has('emails', '=', 0)->get();
Run Code Online (Sandbox Code Playgroud)
编辑
您可以使用whereHas()和whereDoesntHave()方法执行更高级的查询:
$tooLong = EmailSubscriptions::whereHas('subscriptionType', function($q) {
$q->where('name', 'New Mission');
})
->whereDoesntHave('emails', function ($query) {
$query->where('status', '=', 'whatever');
})->get();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1480 次 |
| 最近记录: |