Sprawdź, czy model został zapisany
save()
zwróci wartość logiczną, zapisaną lub nie zapisane. Możesz więc zrobić:
$saved = $myModel->save();
if(!$saved){
App::abort(500, 'Error');
}
Lub bezpośrednio zapisz w jeśli:
if(!$myModel->save()){
App::abort(500, 'Error');
}
Zauważ, że nie ma sensu wywoływanie save()
dwa razy z rzędu, jak w twoim przykładzie. A tak przy okazji, wiele błędów lub problemów, które uniemożliwiłyby zapisanie modelu, i tak wyrzucą wyjątek...
Sprawdź, czy zapytanie zwróciło wynik
first()
zwróci null
gdy nie znaleziono żadnego rekordu, więc czek działa znajdź. Jednak jako alternatywę możesz również użyć firstOrFail()
co automatycznie wyrzuci ModelNotFoundException
gdy nic nie zostanie znalezione:
$UserProduct = Product::where('seller_id', '=', $userId)->firstOrFail();
(To samo dotyczy find()
i findOrFail()
)
Sprawdź, czy zapytanie zostało wykonane
Niestety z create
To nie jest takie proste. Oto źródło:
public static function create(array $attributes)
{
$model = new static($attributes);
$model->save();
return $model;
}
Jak widać, utworzy nową instancję modelu z $attributes
a następnie wywołaj save()
. Teraz, jeśli save()
gdzie zwrócić true, nie wiedziałbyś, ponieważ i tak dostaniesz instancję modelu. Możesz na przykład sprawdzić identyfikator modeli (ponieważ jest to dostępne tylko po zapisaniu rekordu i zwróceniu nowo utworzonego identyfikatora)
if(!$newUser->id){
App::abort(500, 'Some Error');
}