Kontrollera om modellen har sparats
save()
returnerar en boolesk, sparad eller inte sparat. Så du kan antingen göra:
$saved = $myModel->save();
if(!$saved){
App::abort(500, 'Error');
}
Eller spara direkt i if:
if(!$myModel->save()){
App::abort(500, 'Error');
}
Observera att det inte är meningsfullt att anropa save()
två gånger i rad som i ditt exempel. Och förresten, många fel eller problem som skulle hindra modellen från att sparas kommer att skapa ett undantag ändå...
Kontrollera om frågan gav ett resultat
first()
returnerar null
när ingen post hittas så din check fungerar hitta. Men som ett alternativ kan du också använda firstOrFail()
som automatiskt skickar en ModelNotFoundException
när inget hittas:
$UserProduct = Product::where('seller_id', '=', $userId)->firstOrFail();
(Detsamma gäller för find()
och findOrFail()
)
Kontrollera om frågan har körts
Tyvärr med create
det är inte så lätt. Här är källan:
public static function create(array $attributes)
{
$model = new static($attributes);
$model->save();
return $model;
}
Som du kan se kommer den att skapa en ny instans av modellen med $attributes
och anrop sedan save()
. Nu om save()
var du ska returnera sant skulle du inte veta eftersom du skulle få en modellinstans ändå. Vad du till exempel kan göra är att leta efter modellens id (eftersom det bara är tillgängligt efter att posten har sparats och det nyskapade id:t returneras)
if(!$newUser->id){
App::abort(500, 'Some Error');
}