Mysql
 sql >> Base de données >  >> RDS >> Mysql

Vérifiez si le modèle laravel a été enregistré ou si la requête a été exécutée

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