多対多Laravel関係でのテーブルの自動命名について心配しました。
例えば:
Schema::create('feature_product', function (Blueprint $table) {
テーブル名を次のように変更する場合:
Schema::create('product_feature', function (Blueprint $table) {
私の関係にエラーがあります。
その問題は何 product_feature
?
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');
}
_
ドキュメントの多くの多くの関係 について詳しく読むことができます。