mise à jour de tableau croisé dynamique dans le cas de beaucoup de beaucoup de rapport laravel4
J'ai commencé à travailler avec Laravel4 récemment. Je suis confronté à un problème pendant la mise à jour de données de tableau croisé dynamique, dans le cas de beaucoup de beaucoup de relation.
La situation est la suivante:
J'ai deux table: Produit, ProductType.
La relation entre eux est de Nombreux de nombreux.
Mes Modèles sont
class Product extends Eloquent {
protected $table = 'products';
protected $primaryKey = 'prd_id';
public function tags() {
return $this->belongsToMany('Tag', 'prd_tags', 'prta_prd_id', 'prta_tag_id');
}
}
class Tag extends Eloquent {
protected $table = 'tags';
protected $primaryKey = 'tag_id';
public function products()
{
return $this->belongsToMany('Product', 'prd_tags', 'prta_prd_id', 'prta_tag_id');
}
}
Tout en insérant les données du tableau croisé dynamique prd_tags, j'ai fait:
$product->tags()->attach($tag->tagID);
Mais maintenant, je veux mettre à jour les données dans ce tableau croisé dynamique, quelle est la meilleure façon de mettre à jour les données du tableau croisé dynamique.
Disons que, je veux supprimer certaines balises et ajouter de nouvelles balises à un produit en particulier.
Oui, je suis passé par ce document. il y a la méthode appelée sync pour ce faire, ce qui aura un tableau d'id et d'insérer et de supprimer respectivement, mais que faire si mon tableau croisé dynamique ont des attributs autres que l'id de tableau. La méthode de synchronisation doit prendre un tableau d'objets au lieu d'un tableau d'entiers.
Éloquent favorise une simple conception d'une table où vos tableaux croisés dynamiques ont ID colonnes servant de référence pour les lignes. Éloquent n'a pas été conçu pour répondre à d'autres conceptions de base de données, comme il y a de plus complet ORM solutions disponibles.
OriginalL'auteur Sameer | 2013-03-25
Vous devez vous connecter pour publier un commentaire.
Vieille question, mais sur Nov 13, 2013, le updateExistingPivot méthode a été rendu public pour beaucoup de nombreuses relations. Ce n'est pas dans la documentation officielle encore.
--Met à jour un pivot dossier sur la table.
Février 21, 2014 vous devez inclure tous les trois arguments.
Dans votre cas, si vous voulais mettre à jour le champ de tableau croisé dynamique "foo") que vous pouvez faire:
Ou vous pouvez modifier la dernière boolean false à true si vous voulez toucher le parent d'horodatage.
Pull request:
https://github.com/laravel/framework/pull/2711/files
Parfait, merci!
public void
, faute de frappe?Pas une faute de frappe, à la fois, il ne reviendra pas quoi que ce soit. Regarde comme il retourne un int, sans doute la nouvelle carte d'identité. Je vais modifier la réponse. Merci.
OriginalL'auteur Andrew
Je sais que c'est une vieille question, mais si vous êtes toujours intéressé à la solution, la voici:
Permet de dire que votre tableau croisé dynamique a 'foo" et " bar " comme des attributs supplémentaires, vous pouvez le faire pour insérer des données dans la table:
OriginalL'auteur Shishir
Une autre méthode pour cela, tout en travaillant avec laravel 5.0+
$pivot->pivot->save();
pour sauver mon tableau croisé dynamique.c'est en fait la meilleure solution je pense.
Si vous utilisez cette méthode, vous obtiendrez un message d'erreur:
Indirect modification of overloaded property has no effect
OriginalL'auteur Gokigooooks
c'est l'exemple complet :
OriginalL'auteur Hamid Naghipour