Aussi bonnes que soient toutes ces réponses, car je les ai toutes essayées, une chose reste sans réponse ou n'est pas prise en compte : le problème de la mise à jour d'une valeur précédemment cochée (décochage de la ou des cases cochées). J'ai quelque chose de similaire à la question ci-dessus : je veux cocher 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é qu'aucune des solutions ci-dessus ne permettait de le faire. Elles sont toutes deux efficaces pour ajouter de nouvelles caractéristiques, mais pas pour supprimer des caractéristiques existantes (c'est-à-dire les décocher).
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 doive supprimer la question parce que, ayant trouvé la réponse moi-même, elle semble un peu stupide, mais la réponse à ce qui précède est aussi simple que de faire fonctionner @Barryvdh sync() comme suit ; ayant lu de plus en plus sur.. :
$features = $request->get('features');
if (isset($features) && Count($features)>0){
$product->features()->sync($features);
}