如何使用雄辩过滤器中的关系进行搜索

时间:2019-12-13 10:41:05

标签: php laravel laravel-5

我有故事表和标签表。故事表具有关系表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');
    }

0 个答案:

没有答案