gpt4 book ai didi

php - 使用 Eloquent 选择关系计数为零的所有记录?

转载 作者:行者123 更新时间:2023-11-29 01:20:53 27 4
gpt4 key购买 nike

用简单的英语来说:我有三个表。 subscription_type 有很多 email_subscription 有很多 email

我正在尝试选择所有具有特定 subscription_typeemail_subscription 记录,这些记录也没有任何关联的 email 记录状态已举行

我坚持的特定一点是只返回 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 语法?

最佳答案

可以使用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();

关于php - 使用 Eloquent 选择关系计数为零的所有记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31264374/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com