I have these models : User , Post , Commant , Check_days
Comment model contains :
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
--------------------------------------------------------------------------------------
i want to create this table daily by Task Scheduling
Check_days model contains :
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
-------------------------------------------------------------------------------------------------------
i have tried this :
$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,
]);
}
}
}
How can I write this?
I finally solved it.Thank you for not answering and not helping
$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([
]);
}