sql >> Database >  >> RDS >> Mysql

Controleer of het laravel-model is opgeslagen of de query is uitgevoerd

Controleer of het model is opgeslagen

save() geeft een boolean terug, opgeslagen of niet opgeslagen. U kunt dus het volgende doen:

$saved = $myModel->save();

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

Of sla direct op in de if:

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

Merk op dat het geen zin heeft om save() . aan te roepen twee keer achter elkaar zoals in uw voorbeeld. En trouwens, veel fouten of problemen die ervoor zorgen dat het model niet wordt opgeslagen, zullen sowieso een uitzondering veroorzaken...

Controleer of de zoekopdracht een resultaat heeft opgeleverd

first() retourneert null wanneer er geen record wordt gevonden, zodat uw cheque werkt, vind. Als alternatief kunt u echter ook firstOrFail() . gebruiken die automatisch een ModelNotFoundException . genereert als er niets wordt gevonden:

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

(Hetzelfde geldt voor find() en findOrFail() )

Controleer of de zoekopdracht is uitgevoerd

Helaas met create het is niet zo gemakkelijk. Hier is de bron:

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

    $model->save();

    return $model;
}

Zoals je kunt zien, wordt er een nieuwe instantie van het model gemaakt met de $attributes en bel dan save() . Als nu save() waar u true moet retourneren, u zou het niet weten, omdat u toch een modelinstantie zou krijgen. Wat u bijvoorbeeld zou kunnen doen, is controleren op het model-ID (aangezien dat alleen beschikbaar is nadat het record is opgeslagen en het nieuw gemaakte ID is geretourneerd)

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


  1. Tijd aftrekken formaat resultaat

  2. Is er een verschil tussen SQL Server Express (2012) en LocalDB?

  3. Gegevens exporteren naar Excel vanuit Oracle Table met behulp van PL SQL

  4. Tijdelijke oplossing in mysql voor gedeeltelijke index of gefilterde index?