sql >> Database teknologi >  >> RDS >> Mysql

Tjek, om laravel-modellen blev gemt, eller forespørgslen blev udført

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');
}


  1. syntaksfejl:'afgrænser' er ikke gyldigt input her

  2. Opret Dato-objekt i PHP til datoer før 1970 i et bestemt format

  3. Giver script timeout overført ved databaseimport

  4. Indekser og primære nøgler med flere kolonner