Mysql
 sql >> Base de données >  >> RDS >> Mysql

INSÉRER IGNORER en utilisant Fluent de Laravel

Essayez cette magie, dans votre modèle :

public static function insertIgnore($array){
    $a = new static();
    if($a->timestamps){
        $now = \Carbon\Carbon::now();
        $array['created_at'] = $now;
        $array['updated_at'] = $now;
    }
    DB::insert('INSERT IGNORE INTO '.$a->table.' ('.implode(',',array_keys($array)).
        ') values (?'.str_repeat(',?',count($array) - 1).')',array_values($array));
}

Utilisez comme ceci :

Shop::insertIgnore(array('name' => 'myshop'));

C'est un excellent moyen d'éviter les violations de contraintes qui peuvent se produire avec firstOrCreate dans un environnement multi-utilisateur, si cette propriété 'name' était une clé unique.