sql >> データベース >  >> RDS >> Mysql

3つのテーブル間のLaravelEloquent関係

    現在のスキーマでは、アルバムに基づいてアーティストの役割にタグを付けることはできません。
    テーブルには、artist_roleのエントリを定義する関係がないため 表は特定のアルバム用です。したがって、私が提案するのは、 role_idを含む中間テーブルを作成することです。 artist_id およびalbum_id
    この中間テーブルをlaravelのmanyToManyで使用するには 関係では、1つの属性をピボット属性として指定してモデルのメソッドを定義できます。

    たとえば、 アーティストモデル

    public function Roles(){
        return $this->belongsToMany('App\Roles')->withPivot('album_id');
    }
    
    public function Albums(){
        return $this->belongsToMany('App\Albums')->withPivot('role_id');
    }
    

    他のモデルにも同様の方法を定義します。

    更新:

    Artistを取得するため アルバムでの役割とともに、Albumに次のメソッドを追加します モデル:

    public function Artists(){
        return $this->belongsToMany('App\Artist')->withPivot('role_id');
    }
    

    ロールの場合、次の方法を追加します:

    public function Roles(){
        return $this->belongsToMany('App\Roles')->withPivot('artist_id');
    }
    



    1. 日付文字列を変換して検証するための最良の方法

    2. .NET DBコンテキストからMySQLストアドプロシージャを呼び出すと、MySqlParameterオブジェクトのみがスローされます。

    3. このSQLServerクエリ分割計算の何が問題になっていますか?

    4. Mysqlの起動の問題|エラー!サーバーはPIDファイルを更新せずに終了します