Vérifiez si le modèle a été enregistré
save()
renverra un booléen, enregistré ou non enregistré. Vous pouvez donc soit :
$saved = $myModel->save();
if(!$saved){
App::abort(500, 'Error');
}
Ou enregistrez directement dans le if :
if(!$myModel->save()){
App::abort(500, 'Error');
}
Notez qu'il n'est pas logique d'appeler save()
deux fois de suite comme dans votre exemple. Et d'ailleurs, de nombreuses erreurs ou problèmes qui empêcheraient la sauvegarde du modèle lèveront de toute façon une exception...
Vérifier si la requête a renvoyé un résultat
first()
renverra null
lorsqu'aucun enregistrement n'est trouvé, votre vérification fonctionne donc. Cependant, comme alternative, vous pouvez également utiliser firstOrFail()
qui lancera automatiquement une ModelNotFoundException
quand rien n'est trouvé :
$UserProduct = Product::where('seller_id', '=', $userId)->firstOrFail();
(Il en va de même pour find()
et findOrFail()
)
Vérifier si la requête a été exécutée
Malheureusement avec create
Ce n'est pas si facile. Voici la source :
public static function create(array $attributes)
{
$model = new static($attributes);
$model->save();
return $model;
}
Comme vous pouvez le voir, cela créera une nouvelle instance du modèle avec les $attributes
puis appelez save()
. Maintenant, si save()
où retourner true, vous ne le sauriez pas car vous obtiendriez de toute façon une instance de modèle. Ce que vous pouvez faire, par exemple, est de vérifier l'identifiant des modèles (car il n'est disponible qu'après la sauvegarde de l'enregistrement et le renvoi de l'identifiant nouvellement créé)
if(!$newUser->id){
App::abort(500, 'Some Error');
}