2014-05-06 5 views
0

Comment puis-je transformer cetteDuplicate KEY UPDATE requête dans Laravel4

DB::table('partners')->insert(array($data)); 

Laravel requête pour avoir ON DUPLICATE KEY UPDATE

l'aspect de la structure comme

$data['program_name'] = $program['program']['_']; 
$data['program_id'] = $program_id; 
$data['status'] = $program['status']; 
$data['shop_name'] = $shop->name; 
$data['shop_logo'] = $shop->image; 
$data['shop_description'] = $shop->description; 

program_id est unique

+0

Cela semble être ce que vous voulez, déjà résolu ailleurs http: // stackoverflow .com/a/21009418/1231563 – stuyam

+0

et qu'en est-il de la requête RAW? – fefe

Répondre

2

Utilisez quelque chose comme ça (n'hésitez pas à corriger parce que il est non testé):

DB::statement('INSERT INTO partners VALUES (' . implode(',', 
    array_map(function($val) { return ":$val"; } , array_keys($data)) 
) . ') ON DUPLICATE KEY UPDATE ' . implode(',', 
    array_map(function($val) { return "$val = VALUES($val)"; } , array_keys($data)) 
), $data); 
0

J'ai créé un package qui enveloppa INSERT Duplicate KEY UPDATE

https://packagist.org/packages/yadakhov/insert-on-duplicate-key

$users = [ 
    ['id' => 1, 'email' => '[email protected]', 'name' => 'User One'], 
    ['id' => 2, 'email' => 'us[email protected]', 'name' => 'User Two'], 
    ['id' => 3, 'email' => '[email protected]', 'name' => 'User Three'], 
]; 

User::insertOnDuplicateKey($users); 

// produces: 

INSERT INTO `test_user_table`(`id`,`email`,`name`) VALUES 
(1,'[email protected]','User One'), (2,'[email protected]','User Two'), (3,'user3email.com','User Three') 
ON DUPLICATE KEY UPDATE `id` = VALUES(`id`), `email` = VALUES(`email`), `name` = VALUES(`name`) 
Questions connexes