Aussi bonnes que soient toutes ces réponses parce que je les avais toutes essayées, une chose est toujours laissée sans réponse ou non résolue: le problème de la mise à jour d'une valeur précédemment cochée (décoché la case [es]). J'ai quelque chose de similaire à la question ci-dessus, je veux vérifier et décocher les caractéristiques des produits dans mon tableau des caractéristiques des produits (le tableau croisé dynamique). Je suis un débutant et j'ai réalisé que rien de ce qui précède ne faisait cela. Les deux sont bons lors de l'ajout de nouvelles fonctionnalités mais pas lorsque je veux supprimer des fonctionnalités existantes (c'est-à-dire décochez-le)
J'apprécierai tout éclaircissement à ce sujet.
$features = $request->get('features');
if (isset($features) && Count($features)>0){
foreach ($features as $feature_id){
$feature = Feature::whereId($feature_id)->first();
$product->updateFeatures($feature);
}
}
//product.php (extract)
public function updateFeatures($feature) {
return $this->features()->sync($feature, false);
}
ou
public function updateFeatures($feature) {
if (! $this->features->contains($features))
return $this->features()->attach($feature);
}
//where my attach() is:
public function addFeatures($feature) {
return $this->features()->attach($feature);
}
Désolé les gars, je ne suis pas sûr que je devrais supprimer la question car après avoir trouvé la réponse moi-même, cela semble un peu stupide, eh bien la réponse à ce qui précède est aussi simple que de travailler @Barryvdh sync () comme suit; après avoir lu de plus en plus sur:
$features = $request->get('features');
if (isset($features) && Count($features)>0){
$product->features()->sync($features);
}
attach()
est mixte, il peut s'agir d'un int ou d'une instance de model;) - voir github.com/laravel/framework/blob/master/src/Illuminate/…