2017-06-29 8 views
0

私は、タグテーブルと動物のテーブル(例えば)を多目的に使用しています。私は複数のanimal_idsが含まれているためにそれを必要とするのに対し、 複数のタグを持つLaravel準拠の動物

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

しかし、各 tagのみ1 animal_idを含めることができます。私は、各 animalは、それに関連付けられた複数の tagsを持つことができることを意味関係を追加します。 〜 tag_idに一致する中間テーブルを作成するにはどうすればよいですか?そしてそれをどうやって使うのですか?

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

私がApp\Animals::first->tags()を実行すると、関連するすべてのタグが返されます。そのためにmany-to-many関係 link to documentation

答えて

0

使用belongsToManyは、次の3つのテーブルを必要としています。

animamsとタグの関係を保持する1つのanimals_table、tags_table、および1つのテーブル。

と仮定

テーブル動物は、ID

であり、第3表はanumal_idと外部キーとしてTAG_IDたanimal_tagsあるPRIMARY_KEY

タグテーブルの主キーとしてIDを有します。 animalTagモデルの関係で最後に

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

あるべき動物モデルの関係で今

タグモデルの関係で

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

する必要があります今、あなたは

にアクセスすることができます

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() 

私のコンセプトを理解していただければ幸いです。

3

に一致する

関連する問題