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');
}