gpt4 book ai didi

php - 获取 eloquent 前 3 天发表最后评论的用户

转载 作者:行者123 更新时间:2023-11-29 02:13:04 25 4
gpt4 key购买 nike

实际上,我需要在一个时间间隔内向所有用户发送提醒邮件。所以基本上,如果用户在过去 3 天内没有发表任何评论,我需要向他发送电子邮件。

我正在使用表结构:

用户

  • 编号
  • 用户名
  • 电子邮件
  • 取消订阅

评论

  • 编号
  • 用户编号
  • 评论
  • 创建于

我为此使用了愚蠢的查询

Comment::with(['user' => function ($q) {
$q->where('unsubscribed', 0)->select('id', 'username', 'email');
}])
->groupBy('user_id')
->whereDate('created_at', $thereDaysAgoDate)
->get(['user_id']);

这为我提供了在该特定日期发表评论的所有用户。

我的问题是,我只想要在特定日期发表评论但在该日期之后没有发表任何评论的用户

我可以通过从 comment 表中获取所有用户然后通过 PHP if else 条件比较日期来做到这一点,但我不想以这种方式处理。

那么有没有什么方法可以仅通过 Eloquent 来实现这一目标。

最佳答案

您可以结合使用 whereHaswhereDoesntHave 并根据用户关系满足的条件来翻转查询以过滤用户

    $the_date = '2017-09-29';
User::where('unsubscribed', 0)->whereHas('comments', function ($comments) use ($the_date){
return $comments->whereDate('created_at', '=', $the_date);
})->whereDoesntHave('comments', function($comments) use ($the_date){
return $comments->whereDate('created_at', '>', $the_date);
})->get();

PS: I assume that you have comments relationship with User. This is tested on L5.5.*

关于php - 获取 eloquent 前 3 天发表最后评论的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46580744/

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