Asked Apr 14th, 2022 5:36 p.m. 160 1 1
  • 160 1 1
+1

laravel eloquent query ??

Share
  • 160 1 1

E có một bảng users và một bảng user_activity quan hệ 1-n Giờ e muốn lấy danh sách user không có activity trong vòng 30 ngày đổ lại thì phải làm như nào ạ.

1 ANSWERS


Answered Apr 15th, 2022 12:37 a.m.
Accepted
+3

Bạn có thể dùng NOT EXISTS trong SQL theo mẫu dưới đây hoặc dùng whereDoesntHave trong Query Builder của Laravel.

SELECT users.*
FROM users
WHERE NOT EXISTS (
  SELECT id
  FROM user_activity
  WHERE  users.id = user_activity.user_id AND user_activity.created_at >= ?
  LIMIT 1
)
$users = User::whereDoesntHave('user_activity', function($query) {
    return $query->whereRaw('user_activity.user_id = users.id')
       ->where('user_activity.created_at', '>=', today()->subDays(30));
});
Share
Avatar Tú Trâm @Trungdao
Apr 15th, 2022 10:08 a.m.

cám ơn bạn nhé

+1
| Reply
Share
Apr 18th, 2022 8:23 a.m.

@Trungdao không có gì.

0
| Reply
Share
Viblo
Let's register a Viblo Account to get more interesting posts.