如何在 Laravel 中重写 SQL 查询?
How to rewrite SQL query in Laravel?
我使用以下查询生成器:
$res = Announcement::whereExists(function ($query) {
$query->select(DB::raw(1))
->from('announcement_category')
->join('user_category', 'user_category.category_id', '=', 'announcement_category.category_id')
->where('user_category.user_id', 1)
->where('announcement_category.announcement_id', '=', 'announcements.id')
->whereNull('deleted_at');
})->get();
如何使用短格式重写此查询 with
:
Announcement::with("announcement_category")...
因为,在此查询构建器中,最后添加了条件和 where delete_at NOT null
,但它工作错误。
表之间的关系:
Announcement Announcement_category User_category
_____________ ____________________________ _______________
id | name announcement_id | category_id user_id | category_id
1) Announcement
可以有一个或多个类别 (Announcement has many Announcement_category)
2) 用户可以有一个或多个类别
3) User_category
通过 category_id = category_id
与 Announcement_category
相关
你应该先定义Announcement和AnnouncementCategory之间的关系
public function announcement_category() {
return $this->hasMany(AnnouncementCategory::class, 'announcement_id')
}
然后,随时为关系添加条件,甚至在关系函数中进行设置。
我使用以下查询生成器:
$res = Announcement::whereExists(function ($query) {
$query->select(DB::raw(1))
->from('announcement_category')
->join('user_category', 'user_category.category_id', '=', 'announcement_category.category_id')
->where('user_category.user_id', 1)
->where('announcement_category.announcement_id', '=', 'announcements.id')
->whereNull('deleted_at');
})->get();
如何使用短格式重写此查询 with
:
Announcement::with("announcement_category")...
因为,在此查询构建器中,最后添加了条件和 where delete_at NOT null
,但它工作错误。
表之间的关系:
Announcement Announcement_category User_category
_____________ ____________________________ _______________
id | name announcement_id | category_id user_id | category_id
1) Announcement
可以有一个或多个类别 (Announcement has many Announcement_category)
2) 用户可以有一个或多个类别
3) User_category
通过 category_id = category_id
Announcement_category
相关
你应该先定义Announcement和AnnouncementCategory之间的关系
public function announcement_category() {
return $this->hasMany(AnnouncementCategory::class, 'announcement_id')
}
然后,随时为关系添加条件,甚至在关系函数中进行设置。