Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Verifique se o modelo laravel foi salvo ou a consulta foi executada

Verifique se o modelo foi salvo


save() retornará um booleano, salvo ou não salvou. Então você pode fazer:
$saved = $myModel->save();

if(!$saved){
    App::abort(500, 'Error');
}

Ou salve diretamente no if:
if(!$myModel->save()){
    App::abort(500, 'Error');
}

Observe que não faz sentido chamar save() duas vezes seguidas como no seu exemplo. E, a propósito, muitos erros ou problemas que impediriam que o modelo fosse salvo lançarão uma exceção de qualquer maneira ...

Verifique se a consulta retornou um resultado


first() retornará null quando nenhum registro for encontrado para que sua verificação funcione. No entanto, como alternativa, você também pode usar firstOrFail() que lançará automaticamente uma ModelNotFoundException quando nada for encontrado:
$UserProduct = Product::where('seller_id', '=', $userId)->firstOrFail();

(O mesmo vale para find() e findOrFail() )

Verifique se a consulta foi executada


Infelizmente com create não é tão fácil. Aqui está a fonte:
public static function create(array $attributes)
{
    $model = new static($attributes);

    $model->save();

    return $model;
}

Como você pode ver, ele criará uma nova instância do modelo com o $attributes e então chame save() . Agora se save() onde retornar true você não saberia porque obteria uma instância de modelo de qualquer maneira. O que você pode fazer, por exemplo, é verificar o id dos modelos (já que isso só está disponível depois que o registro é salvo e o id recém-criado é retornado)
if(!$newUser->id){
    App::abort(500, 'Some Error');
}