Wszystkie te odpowiedzi są dobre, ponieważ wypróbowałem je wszystkie, ale jedna rzecz pozostaje bez odpowiedzi lub nie została załatwiona: kwestia aktualizacji wcześniej zaznaczonej wartości (odznaczono zaznaczone pole [es]). Mam coś podobnego do powyższego pytania, spodziewam się, że chcę zaznaczyć i odznaczyć cechy produktów w mojej tabeli cech produktów (tabeli przestawnej). Jestem nowicjuszem i zdałem sobie sprawę, że żaden z powyższych nie zrobił tego. Oba są dobre przy dodawaniu nowych funkcji, ale nie wtedy, gdy chcę usunąć istniejące funkcje (tj. Odznacz je)
Docenię każde oświecenie w tej sprawie.
$features = $request->get('features');
if (isset($features) && Count($features)>0){
foreach ($features as $feature_id){
$feature = Feature::whereId($feature_id)->first();
$product->updateFeatures($feature);
}
}
public function updateFeatures($feature) {
return $this->features()->sync($feature, false);
}
lub
public function updateFeatures($feature) {
if (! $this->features->contains($features))
return $this->features()->attach($feature);
}
public function addFeatures($feature) {
return $this->features()->attach($feature);
}
Przepraszam, nie jestem pewien, czy powinienem usunąć to pytanie, ponieważ po samodzielnym znalezieniu odpowiedzi brzmi to trochę głupio, cóż, odpowiedź na powyższe jest tak prosta, jak praca @Barryvdh sync () w następujący sposób; czytając coraz więcej o:
$features = $request->get('features');
if (isset($features) && Count($features)>0){
$product->features()->sync($features);
}
attach()
jest mieszany, może to być int lub instancja modelu;) - patrz github.com/laravel/framework/blob/master/src/Illuminate/ ...