Tjek, om modellen er blevet gemt
save()
returnerer en boolesk, gemt eller ikke gemt. Så du kan enten gøre:
$saved = $myModel->save();
if(!$saved){
App::abort(500, 'Error');
}
Eller gem direkte i hvis:
if(!$myModel->save()){
App::abort(500, 'Error');
}
Bemærk, at det ikke giver mening at kalde save()
to gange i træk som i dit eksempel. Og forresten, mange fejl eller problemer, der ville forhindre modellen i at blive gemt, vil alligevel give en undtagelse...
Tjek, om forespørgslen gav et resultat
first()
vil returnere null
når ingen post er fundet, så din check virker find. Men som alternativ kan du også bruge firstOrFail()
som automatisk vil kaste en ModelNotFoundException
når der ikke findes noget:
$UserProduct = Product::where('seller_id', '=', $userId)->firstOrFail();
(Det samme gælder for find()
og findOrFail()
)
Tjek, om forespørgslen blev udført
Desværre med create
det er ikke så nemt. Her er kilden:
public static function create(array $attributes)
{
$model = new static($attributes);
$model->save();
return $model;
}
Som du kan se, vil den oprette en ny instans af modellen med $attributes
og kald derefter save()
. Nu hvis save()
hvor du skal returnere sandt, ville du ikke vide, for du ville alligevel få en modelforekomst. Hvad du f.eks. kunne gøre er at tjekke for model-id'et (da det kun er tilgængeligt, efter at posten er gemt, og det nyoprettede id er returneret)
if(!$newUser->id){
App::abort(500, 'Some Error');
}