sql >> Base de Datos >  >> RDS >> Mysql

Compruebe si el modelo laravel se guardó o se ejecutó la consulta

Comprobar si el modelo se guardó

save() devolverá un booleano, guardado o no salvado. Así que puedes hacer:

$saved = $myModel->save();

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

O guardar directamente en el if:

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

Tenga en cuenta que no tiene sentido llamar a save() dos veces seguidas como en tu ejemplo. Y, por cierto, muchos errores o problemas que impedirían que se guarde el modelo arrojarán una excepción de todos modos...

Comprobar si la consulta devolvió un resultado

first() devolverá null cuando no se encuentra ningún registro para que su cheque funcione. Sin embargo, como alternativa, también podría usar firstOrFail() que lanzará automáticamente una ModelNotFoundException cuando no se encuentra nada:

$UserProduct = Product::where('seller_id', '=', $userId)->firstOrFail();

(Lo mismo es cierto para find() y findOrFail() )

Comprobar si la consulta se ejecutó

Desafortunadamente con create no es así de fácil. Aquí está la fuente:

public static function create(array $attributes)
{
    $model = new static($attributes);

    $model->save();

    return $model;
}

Como puede ver, creará una nueva instancia del modelo con los $attributes y luego llamar a save() . Ahora si save() dónde devolver verdadero no lo sabría porque de todos modos obtendría una instancia de modelo. Lo que podría hacer, por ejemplo, es verificar la identificación de los modelos (ya que solo está disponible después de que se guarde el registro y se devuelva la identificación recién creada)

if(!$newUser->id){
    App::abort(500, 'Some Error');
}