每天检查用户是否对帖子发表评论

Check daily if users have commented on posts

我有这些模型:User , Post , Commant , Check_days

评论模型包含: post_id , user_id , comment_date , check_days_comment=(defalt = 0)

---------------------------------------------------------------------------------------
id ---- user_id ----  post_id   ---- comment_date ---   check_days_comment  ---     created_at
---------------------------------------------------------------------------------------
1           1    ----   2       ---  2020-04-01 ----        0               ---     2020-04-08
2           1    ----   2       ---  2020-04-01 ----        0               ---     2020-04-08
3           1    ----   4       ---  2020-04-02 ----        0               ---     2020-04-08
4           1    ----   5       ---  2020-04-02 ----        0               ---     2020-04-08
5           1    ----   6       ---  2020-04-03 ----        0               ---     2020-04-08
6           1    ----   7       ---  2020-04-03 ----        0               ---     2020-04-08
7           1    ----   8       ---  2020-04-03 ----        0               ---     2020-04-08
--------------------------------------------------------------------------------------   

我想通过任务计划每天创建这个 table Check_days 模型包含: user_id,post_id,comment_id,comment_date,user_send_comment

-------------------------------------------------------------------------------------------------------
user_id ----  post_id   ----    comment_id  ---- comment_date --- user_send_comment     ---     created_at
    1    ----   2       ----        1       ---  2020-04-01 ----    true                ---     2020-04-08
    1    ----   4       ----        3       ---  2020-04-02 ----    false               ---     2020-04-08
    1    ----   8       ----        7       ---  2020-04-03 ----    false               ---     2020-04-08
-------------------------------------------------------------------------------------------------------

我试过这个:

$notCheck_users =    \App\Models\Comment::where('check_days_comment',0)->get();
   $all_users = $notCheck_users->pluck('user_id','id')->toArray();
   $all_comment_dates = $notCheck_users->pluck('comment_date','id')->toArray();
   $comment_dates = array_unique($all_comment_dates);
   $users = array_unique($all_users);

   $check_day = new Check_days;
   foreach($users as $user) {
        foreach ($comment_dates as $date) {
         $comment =     $notCheck_users->where('user_id',$user)->whereDate('comment_date',$date)->first();
            if(!is_null($comment)) {
                $check_day->create([
                        'user_id'       => $comment->user_id,
                        'post_id'       => $comment->post_id,
                        'comment_id'    => $comment->id,
                        'comment_date'  => $comment->comment_date,
                        'user_send_comment'     => true,
                ]);
            }
        }
   }

这个怎么写?

您可以使用每天在内核中运行的控制台命令来编写此代码,并且 checks/updates 奖品 table 如果 Carbon class [=15] =]是周末

$date = Carbon::create($flight_date);
$isWeekend = $date->isWeekend() //Returns true or false

我终于解决了it.Thank你不回答不帮忙的问题

$notCheck_comments =    \App\Models\Comment::where('check_days_comment',0)
        ->whereIn('post_id',[2,3,4,5,6])
        ->groupBy(['user_id','comment_date'])->orderBy('user_id')->orderBy('comment_date')
        ->get(['user_id','comment_date']);

        foreach ($notCheck_comments as $notCheck_comment) {
            $comment  = \App\Models\Comment::where('check_days_comment',0)->whereDate('comment_date',$notCheck_comment->comment_date)->where('user_id',$notCheck_comment->user_id)->first();

            $check_day->create([
                    'post_id' =>$comment->post_id,
                    'user_id' =>$comment->user_id, 
                     'comment_id' =>$comment->comment_id, 
                     'comment_date' =>$comment->comment_date, 
                     'check_days_comment' =>1,
            ]);
         $comment->update([

         ]);

        }