Je me préoccupais des noms automatiques des tables dans plusieurs à plusieurs Laravel relation.
par exemple:
Schema::create('feature_product', function (Blueprint $table) {
lorsque vous changez le nom de la table en:
Schema::create('product_feature', function (Blueprint $table) {
J'ai une erreur dans ma relation.
Quel est le problème avec product_feature
?
La convention de dénomination de Laravel pour les tableaux croisés dynamiques consiste en des noms de modèle en forme de serpent dans l'ordre alphabétique séparés par un trait de soulignement. Ainsi, si un modèle est Feature
et l'autre modèle est Product
, le tableau croisé dynamique sera feature_product
.
Vous êtes libre d'utiliser le nom de table de votre choix (tel que product_feature
), Mais vous devrez ensuite spécifier le nom du tableau croisé dynamique dans la relation. Cela se fait en utilisant le deuxième paramètre de la fonction belongsToMany()
.
// 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');
}
Vous pouvez en savoir plus sur plusieurs à plusieurs relations dans les documents .