Php 如何用Elount检索Laravel中具有特定标签的所有图像?

Php 如何用Elount检索Laravel中具有特定标签的所有图像?,php,laravel,eloquent,Php,Laravel,Eloquent,我有三张桌子: Table: images Columns: Image_ID, Title, Description, Author, Date, Path, Rating Table: tags Columns: Tag_ID, Title Table: tag_image Columns: Image_ID, Tag_ID 如果我想获得所有图像,我会这样做: public function specificTag($tagName){ $images = Image:

我有三张桌子:

Table: images
Columns: Image_ID, Title, Description, Author, Date, Path, Rating

Table: tags
Columns: Tag_ID, Title

Table: tag_image
Columns: Image_ID, Tag_ID
如果我想获得所有图像,我会这样做:

public function specificTag($tagName){
        $images = Image::orderBy('created_at', 'desc')->get();
        return view('specificTag', ['images' => $images]);
    }

然后在我的specificTag视图中循环浏览$images。但是,现在我只想显示带有$tagName标记的图像$标记名是一个字符串。任何提示都将不胜感激

您将使用
whereHas
方法

Image::whereHas('tags', function($q) use ($tagName) {
    return $q->where('title', $tagName);
})->orderBy('created_at', 'desc')->get();

您可以使用
whereHas
方法

Image::whereHas('tags', function($q) use ($tagName) {
    return $q->where('title', $tagName);
})->orderBy('created_at', 'desc')->get();

你为什么不利用雄辩的多对多关系呢。 在“图像”模型中创建以下函数

现在,在控制器中,您可以像这样访问它

$image = App\Image::find(1);
foreach($image->tags as $tag){
   $tag->where('title',$title);
}

你可以看看Eloquent的关系

为什么不利用Eloquent的多对多关系呢。 在“图像”模型中创建以下函数

现在,在控制器中,您可以像这样访问它

$image = App\Image::find(1);
foreach($image->tags as $tag){
   $tag->where('title',$title);
}

你可以看看Eloquent的关系

我有点困惑,我在哪里定义变量$images?我有点困惑,我在哪里定义变量$images?