Tốt như tất cả các câu trả lời này là do tôi đã thử tất cả chúng, một điều vẫn chưa được trả lời hoặc chưa được quan tâm: vấn đề cập nhật giá trị đã kiểm tra trước đó (bỏ chọn hộp kiểm [es]). Tôi có điều gì đó tương tự như câu hỏi ở trên, mong đợi tôi muốn kiểm tra và bỏ chọn các tính năng của sản phẩm trong bảng tính năng sản phẩm của tôi (bảng tổng hợp). Tôi là một người mới và tôi đã nhận ra rằng không ai ở trên làm được điều đó. Cả hai đều tốt khi thêm các tính năng mới nhưng không tốt khi tôi muốn xóa các tính năng hiện có (tức là bỏ chọn nó)
Tôi sẽ đánh giá cao bất kỳ sự giác ngộ nào trong việc này.
$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);
}
hoặc là
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);
}
Xin lỗi các bạn, không chắc mình có nên xóa câu hỏi không vì tự mình tìm ra câu trả lời, nghe có vẻ hơi ngu ngốc, câu trả lời ở trên cũng đơn giản như thao tác @Barryvdh sync () như sau; đã đọc nhiều hơn và nhiều hơn nữa về:
$features = $request->get('features');
if (isset($features) && Count($features)>0){
$product->features()->sync($features);
}
attach()
là hỗn hợp, nó có thể là một int hoặc thể hiện của mô hình;) - xem github.com/laravel/framework/blob/master/src/Illuminate/...