当前,我正在使用它来显示所有带有$ tagName标签的图像:
$images = Image::whereHas('tags', function($q) use ($tagName) {
return $q->where('name', $tagName);
})->orderBy('created_at', 'desc')->get();
现在考虑我正在使用多对多态关系,并且我有这些表:
images
id - integer
name - string
albums
id - integer
name - string
tags
id - integer
name - string
taggables
tag_id - integer
taggable_id - integer
taggable_type - string
我可以创建一个查询来检索带有$ tagName标签的图像和相册吗?
答案 0 :(得分:2)
可以。
存储在标签中的是:
id = it's own primary key
tag_id = your custom foreign_key for tag id I'm guessing
taggable_type = model name e.g. "App\Image"
taggable_id = the model's id e.g. "1"
在这些行中,您可以根据需要和已建立的关系从任何模型调用。它的工作原理与其他任何关系一样,您需要知道的是,它会根据taggables_type
和taggables_id
找到相关模型并将其计算出来
Taggables::whereHas('tags', function ($advancedWhereHas) use ($tagName){
$advancedWhereHas->where('name',$tagName)->with(['relationshipToImages.relationshipOfAlbum']);
})->get();