【发布时间】:2018-12-23 00:22:10
【问题描述】:
我有一个表“帖子”,它通常有诸如“id、标题、内容、...、deleted_for_organization”之类的列
其他表:带有id、名称、描述的组织
用户:id,name,email,password,organization_id
目前,我将组织 ID 以 json 数组格式(例如 [1,2,3])存储在 deleted_for_organization 列中。这是指该帖子已针对该组织删除,并且不应对组织的任何成员可见。
现在,每当请求加载所有帖子时,我只想使用 eloquent 为其组织删除那些未删除的帖子。
这可能吗,还是我需要创建另一个数据透视表来维护多对多的关系。
在浏览 laravel 雄辩的文档时,我遇到了
$posts = App\Post::whereDoesntHave('comments', function ($query) {
$query->where('content', 'like', 'foo%');
})->get();
但是,我不知道这是否适合我的问题。
【问题讨论】:
-
虽然我不推荐使用这种结构,但 laravel 5.6 有
whereJsonContain和whereJsonDoesntContain你可以看看。App\Post::whereJsonDoesntContain('deleted_for_organization', $orgId)->get() -
@rkj 你能把
whereJsonContain的文档链接提供给我 -
JsonNotContains 的地方。在这里github.com/laravel/framework/blob/…