2016-06-26 6 views
0

1週間前にlaravelを開始しましたが、今日は雄弁を正しく使用することに決めました。3テーブルでLaravelのリクエストを実行できません

私はあなたが私の問題を説明してくれるのだろうかと疑問に思っている場合、私はすでにトピック、Googleの解決策を探しました。 私は約8時間この問題に取り組んでいます。 さて、3つのデータベースを作成しました(mgrationを使用してリレーションを作成しています)

  • タグ[id;

名]

  • ユーザー[ID、そのない重要]
  • TagsRelationUsers [ID、USER_ID、TAG_ID]はだから、私はちょうど私に関連するすべてのタグ名を与えるリクエストを作りたいですuserは、user_idを持つだけで、tagsRelationUsersテーブルに格納されます。

    私の場合、ユーザーは無限のタグを持つことができ、タグは無限のユーザー数を持つことができます。そのため、TagsRelationUsersというテーブルを作成しました。

    class User extends Authenticatable 
    
    public function tagsRelationsUsers() 
    { 
        return $this->belongsTo('App\TagRelationUser'); 
    } 
    

    class Tag extends Model 
    
    public function tagsRelationsUsers() 
    { 
        return $this->belongsTo('App\TagRelationUser'); 
    } 
    

    あなたが私を助けることができれば、これは超クールです:)。ありがとう!

  • 答えて

    1
    あなたがここで少し間違ったことをやっている

    1. 関係の方法が間違って呼ばれています。 (多対多関係の場合)。
    2. Laravelは、関連テーブルのピボットテーブル名を推測します。表名の単数形を使用してアルファベット順にソートし、 '_'を使用して結合します(したがって、あなたの場合はtag_userです)。しかし、TagsRelationUsersをピボット・テーブルとして使用しているため、明示的に指定する必要があります。

    ピボットテーブルの名前を推測するのはTagsRelationUsersです。

    これを試してください。

    class User extends Authenticatable 
    
    public function tagsRelationsUsers() 
    { 
        return $this->belongsToMany('App\Tag', 'TagsRelationUsers', 'tag_id', 'user_id'); 
    } 
    
    class Tag extends Model 
    
    public function tagsRelationsUsers() 
    { 
        return $this->belongsToMany('App\User', 'TagsRelationUsers', 'user_id', 'tag_id'); 
    } 
    
    関連する問題