使用eloquent laravel 5.6从表中获取记录,其中已删除的组织id数组不包含组织id

使用eloquent laravel 5.6从表中获取记录,其中已删除的组织id数组不包含组织id,laravel,eloquent,Laravel,Eloquent,我有一个“posts”表,它通常有“id,title,content,…,deleted\u for\u organization”等列 其他表:具有id、名称、说明的组织 用户:id、姓名、电子邮件、密码、组织\u id 目前,我正在以json数组格式(如[1,2,3])将组织id存储在删除的_for_organization列中。这意味着此帖子已被删除,并且对于组织中的任何成员都不应可见 现在,每当有人请求加载所有帖子时,我只想使用eloquent为他们的组织删除那些没有被删除的帖子 这是可

我有一个“posts”表,它通常有“id,title,content,…,deleted\u for\u organization”等列

其他表:具有id、名称、说明的组织

用户:id、姓名、电子邮件、密码、组织\u id

目前,我正在以json数组格式(如[1,2,3])将组织id存储在删除的_for_organization列中。这意味着此帖子已被删除,并且对于组织中的任何成员都不应可见

现在,每当有人请求加载所有帖子时,我只想使用eloquent为他们的组织删除那些没有被删除的帖子

这是可能的,还是我需要创建另一个透视表来维护类似多个透视表的关系

在翻阅拉威尔雄辩的文件时,我偶然发现

$posts=App\Post::whereDoesntHave('comments',function($query){
$query->where('content','like','foo%');
})->get();


但是,我不知道这是否符合我的问题。

使用此代码检索所有未删除的帖子。然后将$undeletedPosts传递到blade view文件,并通过foreach()循环来处理数据。这应该有效,如果对你有效,请告诉我

$userID = 10; //dynamically get user's ID instead of hard coding it
$organizationID = $user->where('id', $userID)->first()->organization_id;
$deletedPosts = $posts->select('id')->where('deleted_for_organization', $organizationID)->toArray();

$undeletedPosts = $posts->whereNotIn('deleted_for_organization', $deletedPosts)->get();

这就是你要找的

$posts=Post::whereRaw(“非json”包含(删除了组织的组织“[”.Auth::user()->organization\u id.”)或由组织删除的组织为空”)->get();

虽然我不建议使用这种结构,但laravel 5.6有
whereJsonContain
whereJsonDoesntContain
,您可以查看<代码>应用程序\帖子::whereJsonDoesntContain('deleted_for_organization',$orgId)->get()@rkj您能给我提供
whereJsonContain
it whereJsonNotContains的文档链接吗。这里呢