Por melhores que sejam todas essas respostas porque eu tentei todas elas, uma coisa ainda ficou sem resposta ou não foi atendida: o problema de atualizar um valor previamente marcado (desmarcada a caixa marcada [es]). Eu tenho algo semelhante à pergunta acima, mas espero verificar e desmarcar os recursos dos produtos em minha tabela de recursos de produtos (a tabela dinâmica). Eu sou um novato e percebi que nenhuma das opções acima fazia isso. Ambos são bons para adicionar novos recursos, mas não quando eu quero remover recursos existentes (ou seja, desmarcá-lo)
Eu aprecio qualquer esclarecimento sobre isso.
$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);
}
ou
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);
}
Desculpe pessoal, não tenho certeza se devo deletar a pergunta porque tendo descoberto a resposta sozinho, parece um pouco estúpido, bem, a resposta acima é tão simples quanto trabalhar @Barryvdh sync () da seguinte maneira; tendo lido cada vez mais sobre:
$features = $request->get('features');
if (isset($features) && Count($features)>0){
$product->features()->sync($features);
}
attach()
é misturado, pode ser um int ou uma instância do modelo;) - consulte github.com/laravel/framework/blob/master/src/Illuminate/…