我有2个表和第三个数据透视表,如下所示:
表1:文件
表2:池
表3:file_pools
所有模型和关系均已就绪。
File
可能不属于一个,一个或多个池
Pool
可能没有文件,1个或更多文件
现在,我想在模型visible
中创建范围File
,以便:
下面是我尝试过的内容,但这包括可见池和不可见池中的文件
public function scopeVisible($query)
{
return $query->doesntHave('pools')->orWhereHas('pools', function ($query) {
$query->where('is_visible',1);
});
}
非常欢迎任何帮助
table: files | id | title | |----------|---------------| | 1 | File A | | 2 | File B | | 3 | File C | | 4 | File D |
table: pools | id | title | is_visible| |----------|---------------|---------- | | 1 | Pool 1 | 1 | | 2 | Pool 2 | 0 |
table: file_pools | file_id | pool_id | |----------|---------------| | 1 | 1 | | 2 | 2 | | 3 | 1 | | 3 | 2 |
The Expected Result : (scope:visible) | id | title | |----------|---------------| | 1 | File A | | 4 | File D |
希望这可以澄清
答案 0 :(得分:1)
如果我正确理解您的情况:
public function scopeVisible($query)
{
return $query->whereDoesntHave('pools', function ($query) {
$query->where('is_visible', 0);
});
}