没有中间表的雄辩的多对多关系

bwleehnv  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(333)

我是个新来的能言善辩的人,我在下面的问题上挣扎得很厉害。
在我的数据库(mysql 5.7)中,有两个表,结构如下。
文章:

{
    _id: 1,
    title: "xxx",
    content: "xxx",
    tag_ids: [
        4,
        5
    ]
}

标签:

{
    _id: 4,
    tag: "tag1"
}

在articlemodel中,有一个cast

protected $casts = [
    "tags" => "array"
];

有没有可能建立一个没有中间表的多对多关系?
任何帮助都将不胜感激!

p4rjhz4m

p4rjhz4m1#

我创建了一个包含json关系的包:https://github.com/staudenmeir/eloquent-json-relations
您可以创建如下多对多关系:

class Article extends Model
{
    use \Staudenmeir\EloquentJsonRelations\HasJsonRelationships;

    protected $casts = [
       'tag_ids' => 'array'
    ];

    public function tags()
    {
        return $this->belongsToJson(Tag::class, 'tag_ids');
    }
}

class Tag extends Model
{
    use \Staudenmeir\EloquentJsonRelations\HasJsonRelationships;

    public function articles()
    {
       return $this->hasManyJson(Article::class, 'tag_ids');
    }
}

相关问题