sql >> Databasteknik >  >> RDS >> Mysql

Kontrollera om laravel-modellen har sparats eller om frågan har körts

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


  1. Slinga över resultatuppsättningar i MySQL

  2. Effektiv extern tjänstgöring med MySQL och ejabberd

  3. Använda IN-satsen med en kommaavgränsad sträng från utdata från en replace() funktion i Oracle SQL

  4. Datatyp för lagring av ip-adress i SQL Server