Tak dobre, jak wszyscy te odpowiedzi są, ponieważ wypróbowałem je wszystkie, jedna rzecz wciąż pozostaje bez odpowiedzi lub nie zajęta: kwestia aktualizacji poprzednio sprawdzonej wartości (odznaczono pole wyboru [es]). Mam coś podobnego do powyższego pytania, chcę sprawdzić i odznaczyć funkcje produktów w mojej tabeli funkcji produktu (tabela przestawna). Jestem początkującym 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 (to jest usunąć zaznaczenie).
Doceniam każde oświecenie.
$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);
}
lub
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);
}
Sorry chłopaki, nie wiem, to powinienem usunąć pytanie, ponieważ mający znaleźć odpowiedź sam, brzmi to nieco głupie, ale odpowiedź na powyższe jest tak proste jak praca @Barryvdh sync() w następujący sposób; po zapoznaniu się coraz więcej na temat:
$features = $request->get('features');
if (isset($features) && Count($features)>0){
$product->features()->sync($features);
}
parametr id $ dla metody 'attach()' jest mieszana, to może być int lub instancja modelu;) - zobacz https://github.com/laravel /framework/blob/master/src/Illuminate/Database/Eloquent/Relations/BelongsToMany.php?source=cc#L589 –
Dziękujemy @RobGordijn. Nauczyłem się czegoś dzisiaj! Odpowiedź edytowana. –
Jaki jest cel oświadczenia "zawiera"? Nie mogłem znaleźć żadnych duplikatów dla mnie, więc nadal mam błąd duplikacji, gdy używam tego. –