web-dev-qa-db-ja.com

多対多のリレーションシップでテーブルに名前を付けるlaravel

多対多Laravel関係でのテーブルの自動命名について心配しました。

例えば:

Schema::create('feature_product', function (Blueprint $table) {

テーブル名を次のように変更する場合:

Schema::create('product_feature', function (Blueprint $table) {

私の関係にエラーがあります。

その問題は何 product_feature

26
Pedram marandi

Laravelのピボットテーブルの命名規則は、アンダースコアで区切られたアルファベット順のsnake_casedモデル名です。したがって、1つのモデルがFeatureであり、他のモデルがProductである場合、ピボットテーブルは_feature_product_になります。

任意のテーブル名(_product_feature_など)を自由に使用できますが、リレーションシップでピボットテーブルの名前を指定する必要があります。これは、belongsToMany()関数の2番目のパラメーターを使用して行われます。

_// in Product model
public function features()
{
    return $this->belongsToMany('App\Feature', 'product_feature');
}

// in Feature model
public function products()
{
    return $this->belongsToMany('App\Product', 'product_feature');
}
_

ドキュメントの多くの多くの関係 について詳しく読むことができます。

56
patricus