Por muy buenas que sean todas estas respuestas porque las probé todas, una cosa aún queda sin respuesta o no se ha solucionado: el problema de actualizar un valor previamente marcado (desmarcó las casillas marcadas). Tengo algo similar a la pregunta anterior, espero que quiera marcar y desmarcar las características de los productos en mi tabla de características del producto (la tabla dinámica). Soy un novato y me he dado cuenta de que ninguno de los anteriores hizo eso. Ambos son buenos cuando se agregan nuevas funciones, pero no cuando quiero eliminar funciones existentes (es decir, desmarcarlo)
Apreciaré cualquier esclarecimiento en esto.
$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);
}
o
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);
}
Lo siento chicos, no estoy seguro si debería eliminar la pregunta porque, al haber descubierto la respuesta yo mismo, suena un poco estúpido, bueno, la respuesta a lo anterior es tan simple como trabajar con @Barryvdh sync () de la siguiente manera; habiendo leído más y más sobre:
$features = $request->get('features');
if (isset($features) && Count($features)>0){
$product->features()->sync($features);
}
attach()
es mixto, puede ser un int o una instancia del modelo;) - ver github.com/laravel/framework/blob/master/src/Illuminate/…