Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Update no laravel

Após a realização dos dois cursos de laravel ,iniciei um projeto meu para treinar, e notei a necessidade de Editar os dados de um formulário,porém não consegui fazer uma edição utilizando as regras da classe formRequest (passei como parametro da função), teria algum exemplo de como realizar essa função no laravel ?e qual seria a função de update no laravel ?

segue abaixo um exemplo de codigo que tentei

    public function UpdateEmpresa(EmpresaRequest $request){
        $params = $request->all();
        $empresa = Empresa::find($request->ID);
        $empresa->save($params);
        return redirect()->action('EmpresasController@ListaEmpresas');
    }
4 respostas

Alguém poderia me auxiliar?ja faz dois dias que fiz essa pergunta no fórum e já abri uma outra pergunta sobre o mesmo assunto na qual não tive resposta

solução!

Marcelo, pra mim o seu código está correto, o que está acontecendo pra você achar que não está funcionando?

Mas tem um porém, o médoto save até onde lembro, não aceita argumentos como você está passando:

$empresa->save($params);

Então, você precisaria alterar o objeto empresa antes de tentar salvar. Por conveniência, existe uma forma fácil, usando o método fill:

$empresa->fill($params);

Ele aceita um array de chaves e valores onde a chave deve ser o mesmo nome do atributo do objeto e o valor do array será aplicado como valor do atributo.

Um porém é que talvez você precise criar a lista de atributos que podem ser preenchidos dessa forma na classe:

 protected $fillable = ['nome', 'cpnj'];

Esse é o "Mass Assignment", atribuição em massa: você lista os atributos que podem ser atribuídos em massa na sua classe e o método fill faz isso pra você com o array que passar.

Consegui fazer o pudate utilizando o seguinte código

public function UpdateEmpresa(EmpresaRequest $request){
        Empresa::where('ID', $request->ID)->update(request()->except(['_token']));
        return redirect()->action('EmpresasController@ListaEmpresas');
    }

Acredito que o problema era o _Token que estava passando junto.

Hm, funciona, mas acho que ficou tudo bem misturado :)

De qualquer forma, parabéns pela solução, bons estudos!