[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Marcos Birro Calixto
Criador Marcos Birro Calixto 20/01/2020

Carlos, boa tarde.

Tem como usar o update desta forma? Eu testo se existe e se existir só faço update no banco.

                Preventiva::create([
                    'preventiva_id' => $preventiva->preventiva_id,
                    'status' => $preventiva->status,
                    'predio' => $preventiva->predio,
                    'UF' => $preventiva->UF,
                    'preventive_tipo' => $preventiva->preventiva_tipo,
                    'checklist_id' => $preventiva->checklist_id,
                    'data_programada' => $preventiva->data_programada,
                    'ciclo' => $preventiva->ciclo,
                    'periodicidade' => $preventiva->periodicidade,
                    'ultima_preventiva' => $preventiva->ultima_preventiva,
                    'justificativa' => $preventiva->justificativa,
                ]);
Manager Carlos Ferreira 20/01/2020

Olá, Marcos!
Tudo bem?

Existe o método "updateOrCreate", mas ele só dá certo 100% se os dados foram iguais, caso contrário sempre vai criar um novo registro.

https://laravel.com/docs/6.x/eloquent#other-creation-methods

Carlos Ferreira
Criador Marcos Birro Calixto 20/01/2020

 Oi Carlos.

Só funciona  vase todos  campos que desejo atualizar for igual ao que já existe? Não entendi já que desejo fazer um update pois entendo que algum dado foi alterado.

Caso não seja fazer desta forma acredito que localizar e fazer um If para update e create certo?

Obrigado.

Marcos Birro Calixto
Manager Carlos Ferreira 20/01/2020

Isso, se for igual ele atualiza, se for diferente ele insere um novo registro.

Para se sentir mais confortável acho mais viável inserir/editar manualmente:
$preventiva = Preventiva::where('nome_campo', $valor)->first();

if (!$preventiva) {
    Preventiva::create([
        ...
    ]);
} else {
    $preventiva->udate([
        ...
    ]);
}

Carlos Ferreira
Criador Marcos Birro Calixto 20/01/2020

Carlos, estou fazendo assim e está com erro:

         else {
                Preventiva->update([
                    'preventiva_id' => $preventiva->preventiva_id,
                    'status' => $preventiva->status,
Parse error: syntax error, unexpected '->' (T_OBJECT_OPERATOR)"
Se coloco :: como
  1. else {
  2. Preventiva::update([
  3. 'preventiva_id' => $preventiva->preventiva_id,
  4. 'status' => $preventiva->status,

 

"Non-static method Illuminate\Database\Eloquent\Model::update() should not be called statically"

Como usso o update desta forma?
Marcos Birro Calixto
Criador Marcos Birro Calixto 20/01/2020

Caralos, eu fiz assim e funcionou! É assim mesmo? Eu tive que fazer o where novamente. Tem como fazer o update direto já que testei usando o find e já sei que existe?

            else {
                Preventiva::where('preventiva_id'$prev)->update(
                    array(
                        'preventiva_id' => $preventiva->preventiva_id,
                        'status' => $preventiva->status,
Marcos Birro Calixto
Manager Carlos Ferreira 20/01/2020

Isso, quando vai fazer o update precisa fazer o where para especificar qual exatamente o registro que está atualizando.

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!