Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Überprüfen Sie, ob das Laravel-Modell gespeichert oder die Abfrage ausgeführt wurde

Überprüfen Sie, ob das Modell gespeichert wurde

save() gibt einen booleschen Wert, gespeichert oder nicht zurück Gerettet. Sie können also entweder:

$saved = $myModel->save();

if(!$saved){
    App::abort(500, 'Error');
}

Oder direkt im if:

speichern
if(!$myModel->save()){
    App::abort(500, 'Error');
}

Beachten Sie, dass es keinen Sinn macht, save() aufzurufen zweimal hintereinander wie in deinem Beispiel. Übrigens lösen viele Fehler oder Probleme, die das Speichern des Modells verhindern würden, sowieso eine Ausnahme aus...

Überprüfen Sie, ob die Abfrage ein Ergebnis zurückgegeben hat

first() gibt null zurück Wenn kein Datensatz gefunden wird, funktioniert Ihre Überprüfung. Alternativ können Sie aber auch firstOrFail() verwenden was automatisch eine ModelNotFoundException auslöst wenn nichts gefunden wird:

$UserProduct = Product::where('seller_id', '=', $userId)->firstOrFail();

(Das Gleiche gilt für find() und findOrFail() )

Überprüfen Sie, ob die Abfrage ausgeführt wurde

Leider mit create Es ist nicht so leicht. Hier ist die Quelle:

public static function create(array $attributes)
{
    $model = new static($attributes);

    $model->save();

    return $model;
}

Wie Sie sehen, wird eine neue Instanz des Modells mit den $attributes erstellt und dann save() aufrufen . Nun, wenn save() wo Sie true zurückgeben, wissen Sie nicht, weil Sie sowieso eine Modellinstanz erhalten würden. Sie könnten beispielsweise nach der Modell-ID suchen (da diese erst verfügbar ist, nachdem der Datensatz gespeichert und die neu erstellte ID zurückgegeben wurde)

if(!$newUser->id){
    App::abort(500, 'Some Error');
}