gpt4 book ai didi

mysql - Laravel 将动物与多个标签相关联

转载 作者:太空宇宙 更新时间:2023-11-03 11:37:19 25 4
gpt4 key购买 nike

我有一个用于多种用途的标签表和动物表(例如)。我想添加一个关系,这意味着每个 animal 都可以有多个 tags 与之关联:

class Animals extends Model
{
protected $table = 'animals';
public function tags()
{
return $this->hasMany('\App\Tags');
}
}

但是每个标签只能包含1个animal_id,而我需要它包含多个animal_id。如何创建一个将 animal_id 匹配到 tag_id 的临时表?然后我该如何使用它?

animal_id    tag_id
1 1
1 2
1 3
2 1
3 1

所以当我执行 App\Animals::first->tags() 时它会返回所有关联的标签?

最佳答案

为此你需要三个表。

一个 animals_table、tags_table 和一个保存 animanls 和标签之间关系的表。

假设

table animals 的 id 作为 primary_key

tags表主键是id

第三个表是 animal_tags,它具有 anumal_id 和 tag_id 作为外键。

现在动物模型关系应该是

public function tags(){
return $this->hasmany(\App\animalTag::class,'animal_id','id')
}

标签模型关系应该是

public function animal(){
return $this->hasMany(\App\animalTag::class,'tag_id','id');
}

最后在animalTag模型中的关系应该是

public function animal(){
return $this->hasOne(\App\animal::class,'id','animal_id');
}

public function tag(){
return $this->hasOne(\App\tag::class,'id','tag_id');
}

现在你可以访问了

App\Animal::first->tags()

希望你理解我的概念。

关于mysql - Laravel 将动物与多个标签相关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44823691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com