Как бы хороши ни были все эти ответы, потому что я перепробовал их все, одна вещь все еще осталась без ответа или не решена: проблема обновления ранее отмеченного значения (снята отметка с флажком [es]). У меня есть что-то похожее на приведенный выше вопрос, ожидаю, что я хочу проверять и снимать флажки функций продуктов в моей таблице функций продукта (сводная таблица). Я новичок и понял, что ничего из вышеперечисленного не помогло. Оба они хороши при добавлении новых функций, но не тогда, когда я хочу удалить существующие функции (т.е. снять флажок).
Я буду признателен за любое разъяснение по этому поводу.
$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);
}
или
public function updateFeatures($feature) {
if (! $this->features->contains($features))
return $this->features()->attach($feature);
}
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/…