如何在Laravel 5中使用数据透视表和另一个表进行查询过滤?

时间:2018-09-02 09:07:18

标签: laravel-5

对不起,我真的不知道该怎么称呼。

我正在建立一个带有专辑的插图网站。 插图可以上传到相册。

在photos表中,我有一个经过处理的表。 这样,我可以检查插图是否被处理,如果可以,则可以搜索,否则用户必须编辑处理后的一个或多个插图。

我可以选择特定相册中的照片,但是我不知道如何过滤属于查看相册的已处理插图。

我还有一个单独的表album_photos表。 相册和照片的关系是hasMany和belongsToMany。

通过这种方式,我选择了所有照片,但未使用已处理的照片进行过滤。

$photos = Photo::whereIn('id', $album -> album_photos() -> pluck('photo_id'))->get();

通过这种方式,我选择了相应用户的所有已处理照片。

$photosNotProcessed = Photo::where('user_id', Auth::user() -> id)->whereNull('processed')->get();

现在,我想在查看相册中选择未处理的照片。 有什么想法吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

我发现您有3张桌子的照片,相册和一张已处理的桌子! 照片和相册有很多关系,并且与已处理表的照片也有关系,如果要选择要记入相册的已处理照片,因此可以在照片表中添加一个位置:

  Photo::where('user_id', Auth::user() -> id)->whereNull('processed')->whereIn('id', $album -> album_photos()) -> pluck('photo_id'))->get();;