Tüm bu cevaplar, hepsini denediğim için olsa da, bir şey hala cevapsız bırakılıyor veya halledilmiyor: önceden kontrol edilen bir değeri güncelleme sorunu (işaretli kutu [ların] işaretini kaldırın). Ürün özelliği tablomdaki (pivot tablo) ürünlerin özelliklerini kontrol etmek ve işaretini kaldırmak istediğimi umduğum yukarıdaki soruya benzer bir şeyim var. Ben bir acemiyim ve yukarıdakilerin hiçbirinin bunu yapmadığını fark ettim. Her ikisi de yeni özellikler eklerken iyidir, ancak mevcut özellikleri kaldırmak istediğimde değil (yani işaretini kaldırın)
Bu konudaki herhangi bir aydınlanmayı takdir edeceğim.
$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);
}
veya
public function updateFeatures($feature) {
if (! $this->features->contains($features))
return $this->features()->attach($feature);
}
public function addFeatures($feature) {
return $this->features()->attach($feature);
}
Üzgünüm çocuklar, soruyu silmem gerektiğinden emin değilim çünkü cevabı kendim çözdüğümde, kulağa biraz aptalca geliyor, yukarıdakinin cevabı @Barryvdh sync () ile çalışmak kadar basit şu şekildedir; hakkında daha çok şey okuduktan sonra:
$features = $request->get('features');
if (isset($features) && Count($features)>0){
$product->features()->sync($features);
}
attach()
karışıktır, bir model veya bir model örneği olabilir;) - bkz. Github.com/laravel/framework/blob/master/src/Illuminate/…