【发布时间】:2017-02-25 17:04:25
【问题描述】:
我使用以下查询生成器:
$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和User之间建立的关系吗? -
是的,看看更新的问题
-
1)
delete_at属于哪个表? 2) 如果您使用 SoftDeletes,不应该是deleted_at吗? 3)您是否在模型中设置了关系,例如AnnouncementbelongsToManyCategory和CategorybelongsToManyUser? -
deleted_at仅在Announcement表中,如果不删除则为NULL。我在模型中没有关系,因为我不知道AnnouncementCategory和UserCategory之间的关系类型。不,公告可以有很多类别,它与用户没有关系。用户只与UserCategoryby field: user.id = user_category.user_id有关系
标签: laravel laravel-5.4