Наскільки хороші всі ці відповіді, тому що я їх усі спробував, одне все ще залишається без відповіді або не вирішено: проблема оновлення попередньо перевіреного значення (знято прапорець). У мене є щось подібне до вищезазначеного питання, я очікую, що я хочу перевірити та зняти прапорці щодо продуктів у моїй таблиці характеристик продукту (зведеній таблиці). Я новачок, і я зрозумів, що ніхто з перерахованого вище цього не робив. Обидва вони хороші при додаванні нових функцій, але не тоді, коли я хочу видалити існуючі функції (тобто зняти його)
Я буду вдячний за будь-яке прозріння в цьому.
$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);
}
або
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);
}
Вибачте, хлопці, не впевнений, що мені слід видалити запитання, тому що, коли я сам розгадав відповідь, це звучить трохи по-дурному, ну відповідь на вищесказане є такою ж простою, як робота з @Barryvdh sync () наступним чином; прочитавши все більше і більше про:
$features = $request->get('features');
if (isset($features) && Count($features)>0){
$product->features()->sync($features);
}
attach()
змішаний, це може бути int або екземпляр моделі;) - див. Github.com/laravel/framework/blob/master/src/Illuminate/…