Ежедневно проверяйте, прокомментировали ли пользователи сообщения - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть следующие модели: 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
--------------------------------------------------------------------------------------   

Я хочу ежедневно создавать эту таблицу по расписанию задач. Модель 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,
                ]);
            }
        }
   }

Как я могу написать это?

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

Вы можете написать это с помощью консольной команды, которая запускается каждый день в вашем ядре и проверяет / обновляет таблицу призов с классом Углерод , если дата полета - выходные

$date = Carbon::create($flight_date);
$isWeekend = $date->isWeekend() //Returns true or false
0 голосов
/ 08 апреля 2020

Я наконец-то решил это. Спасибо, что не ответили и не помогли

$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([

         ]);

        }
...