Bonjour,
Je suis présentement entrain de me créer une API pour un "card game" qui ne partage pas son API publiquement. Donc, pour ceux qui ne le savent pas déjà, une carte dans un "card game" peut se faire imprimer une ou plusieurs fois.
À chaque ré-impression, il peut y avoir quelques informations différentes comme par exemple : la rareté; le "set"; et le numéro de la carte.
Donc, j'ai une table composé de 3 foreign keys.
Maintenant, j'aimerais être en mesure d'utiliser la fonction "attach()" qui est proposé par Laravel pour me simplifier la vie et ne pas créer de Model supplémentaire. Mon problème, c'est que je ne comprends pas bien les "pivot tables" et comment ça fonctionne lorsque l'on a plus de 2 foreign keys dans la table.
** Voici le code pour la création de la table.
Schema::create('cards_sets_rarities', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('card_id');
$table->unsignedInteger('set_id');
$table->unsignedInteger('rarity_id');
$table->string('number');
$table->timestamps();
$table->foreign(['card_id', 'set_id', 'rarity_id'])->references(['id', 'id', 'id'])->on(['card', 'set', 'rarity']);
});
Model ****card.php
public function rarities() {
return $this->belongsToMany(Rarity::class);
}
public function sets() {
return $this->belongsToMany(Set::class);
}
Model ****set.php
public function cards() {
return $this->belongsToMany(Card::class);
}
public function rarities() {
return $this->belongsToMany(Rarity::class);
}
Model ****rarity.php
public function cards() {
return $this->belongsToMany(Card::class);
}
public function sets() {
return $this->belongsToMany(Set::class);
}
J'aimerais de l'aide pour comprendre comment faire en sorte que mon pivot table fonctionne avec 3 foreign keys.
Merci!
Salut,
La table de pivot va te permettre de lier l'id de ton card à ta rarity par exemple.
card_id : 1 / rarity_id : 1
Donc par exemple tu peux faire dans ton controller :
<?php
public function save(){
$card = Card::find(1);
$rarity = Rarity::find(1);
$card->rarities->attach($rarity);
}
Quand tu appeleras
<?php
dd($card->rarities);
Tu obtiendras la liste en base de la table rarities
, lié à ton ta card.
Dans tous les cas, tu peux aller sur la doc de Laravel qui donne de vrais exemples concret :)
Merci pour ta réponse @Azorgh. J'ai trouvé une autre façon de faire un peu crochu mais bon...