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

Controlla se il modello laravel è stato salvato o la query è stata eseguita

Verifica se il modello è stato salvato

save() restituirà un valore booleano, salvato o non salvato. Quindi puoi fare:

$saved = $myModel->save();

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

Oppure salva direttamente in if:

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

Nota che non ha senso chiamare save() due volte di seguito come nel tuo esempio. E comunque, molti errori o problemi che impedirebbero il salvataggio del modello genereranno comunque un'eccezione...

Verifica se la query ha restituito un risultato

first() restituirà null quando non viene trovato alcun record, quindi il tuo controllo funziona trova. Tuttavia, in alternativa potresti anche usare firstOrFail() che genererà automaticamente una ModelNotFoundException quando non viene trovato nulla:

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

(Lo stesso vale per find() e findOrFail() )

Verifica se la query è stata eseguita

Sfortunatamente con create non è così facile. Ecco la fonte:

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

    $model->save();

    return $model;
}

Come puoi vedere creerà una nuova istanza del modello con $attributes e quindi chiama save() . Ora se save() dove restituire true non lo sapresti perché otterresti comunque un'istanza del modello. Quello che potresti fare, ad esempio, è controllare l'id del modello (poiché è disponibile solo dopo che il record è stato salvato e l'id appena creato è stato restituito)

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