仅当最后一个相关元素超过 30 天时才返回元素?

Posted

技术标签:

【中文标题】仅当最后一个相关元素超过 30 天时才返回元素?【英文标题】:Eloquent return elements only when last related element is older than 30 days? 【发布时间】:2021-11-17 16:59:38 【问题描述】:

我是编程世界的新手,我使用 laravel。我有Post 模型,每个用户都可以有更多的帖子。对于所有帖子,我都有hasMany 关系,但这与帖子有关,我需要逆逻辑。

我不知道如何才能只获取最后一篇帖子超过 30 天的用户?我需要它们来发送电子邮件通知。

有人可以给我一些意见吗?

【问题讨论】:

【参考方案1】:

https://laravel.com/docs/8.x/eloquent-relationships#querying-relationship-existence

所以应该是这样的:

User::whereHas('posts', function ($query) 
    return $query->where('created_at', '<=', now()->subDays(30);
)->get()

【讨论】:

您也可以将where 更改为whereDate 以比较日期并忽略时间 我认为有问题,因为它总是返回相同的结果,即使我更改日期。

以上是关于仅当最后一个相关元素超过 30 天时才返回元素?的主要内容,如果未能解决你的问题,请参考以下文章

仅当在父元素上指定维度时才继承维度

仅当未禁用前一个元素时才使用指令

仅当不在视图中时才滚动到元素 - jQuery

仅当有两个类并共享相同的第一个类时才选择元素

仅当满足每行元素的条件时,才计算二维数组特定列的均值和方差

仅当每个元素都满足条件时才选择组