我有故事表和标签表。故事表具有关系表Storytag和其他关系表Storytagitem。在故事标签中,存在故事的ID,在故事标签中,存在故事标签的ID和标签的ID。关于数据库关系可能很清楚。
所以我正在使用搜索过滤器。 这是端点:http://127.0.0.1:8000/admin/stories?tags=10
输出在这里:
{
"data": [
{
"id": 3939,
"title": "My Life",
"image": "123.jpg",
"views": 20,
"likes": 0,
"url_key": "--b5466c",
"language": "english",
"public": true,
"status": "published",
"published_date": "11 Nov, 2019",
"published_difference": "1 month before",
"tags": [
{
"id": 10,
"label": "Poetry",
"value": "poetry",
"image": "http://127.0.0.1:8000/tags/November2019/cOgppZ1FNW7PNHdUnH3Z.jpeg",
"count": 175,
"type": "normal"
}
这是我用于标签的StoryFilter。
public function tags($term)
{
return $this->builder->whereHas('tags', function ($query) use ($term) {
return $query->where('tag_id', 'LIKE', "%$term%");
});
}
我希望端点类似于标签标签。 http://127.0.0.1:8000/admin/stories?tags=Poetry
与StoryTag相关的StoryModel
public function storyTags()
{
return $this->hasOne('App\Model\StoryTag');
}
public function tags()
{
return $this->hasManyThrough('App\Model\StoryTagItem', 'App\Model\StoryTag');
}
这是带有StoryTag的StoryTagItem模型关系
public function tags()
{
return $this->belongsTo('App\Model\StoryTag');
}