191 votes

Création et mise à jour de Laravel Eloquent

Quelle est l'abréviation pour insérer un nouvel enregistrement ou mettre à jour un enregistrement existant ?

<?php

$shopOwner = ShopMeta::where('shopId', '=', $theID)
    ->where('metadataKey', '=', 2001)->first();

if ($shopOwner == null) {
    // Insert new record into database
} else {
    // Update the existing record
}

1voto

Duy Ngo Points 11

Comme @JuanchoRamone a posté ci-dessus (merci @Juancho) c'est très utile pour moi, mais si vos données sont des tableaux vous devriez modifier un peu comme ceci :

public static function createOrUpdate($data, $keys) {
    $record = self::where($keys)->first();
    if (is_null($record)) {
        return self::create($data);
    } else {
        return $record->update($data);
    }
}

0voto

N'est-ce pas la même chose que updateOrCreate() ?

Il est similaire mais pas identique. Le updateOrCreate() ne fonctionnera que si le pour une ligne à la fois, ce qui ne permet pas l'insertion en masse. InsertOnDuplicateKey fonctionnera sur plusieurs lignes.

https://github.com/yadakhov/insert-on-duplicate-key

0voto

Hitesh Shine Points 11

Essayez plus de paramètres un qui va sûrement trouver et si la mise à jour disponible et non alors il va créer de nouvelles

$save_data= Model::firstOrNew(['key1' => $key1value,'key'=>$key2value]);
//your values here
$save_data->save();

-2voto

Sabrina Abid Points 35

Vérifier si un utilisateur existe ou non. Si non, insérer

$exist = DB::table('User')->where(['username'=>$username,'password'=>$password])->get();
if(count($exist)  >0) {
    echo "User already exist";;
}
else  {
    $data=array('username'=>$username,'password'=>$password);
    DB::table('User')->insert($data);
}
Laravel 5.4

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X