Mysql Laravel4中的重复密钥更新查询

Mysql Laravel4中的重复密钥更新查询,mysql,laravel-4,sql-update,sql-insert,Mysql,Laravel 4,Sql Update,Sql Insert,我该如何转换它 DB::table('partners')->insert(array($data)); laravel查询在重复密钥更新时具有 结构看起来像 $data['program_name'] = $program['program']['_']; $data['program_id'] = $program_id; $data['status'] = $program['status']; $data['shop_name'] = $shop->name; $data[

我该如何转换它

DB::table('partners')->insert(array($data));
laravel查询在重复密钥更新时具有

结构看起来像

$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;
如果
程序\u id
是唯一的

请使用类似的方法(请随意更正,因为它未经测试):

使用类似的方法(请随意更正,因为它未经测试):

使用类似的方法(请随意更正,因为它未经测试):

使用类似的方法(请随意更正,因为它未经测试):


我创建了一个包,它将在重复密钥更新时进行包装插入


我创建了一个包,它将在重复密钥更新时进行包装插入


我创建了一个包,它将在重复密钥更新时进行包装插入


我创建了一个包,它将在重复密钥更新时进行包装插入


这似乎是您想要的,已经在别处解决了,那么原始查询呢?这似乎是您想要的,已经在别处解决了,那么原始查询呢?这似乎是您想要的,已经在别处解决了,那么原始查询呢?这似乎是您想要的,已经在别处解决了,那么原始查询呢?
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);
$users = [
   ['id' => 1, 'email' => 'user1@email.com', 'name' => 'User One'],
   ['id' => 2, 'email' => 'user2@email.com', 'name' => 'User Two'],
   ['id' => 3, 'email' => 'user3@email.com', 'name' => 'User Three'],
];

User::insertOnDuplicateKey($users);

// produces:

INSERT INTO `test_user_table`(`id`,`email`,`name`) VALUES
(1,'user1@email.com','User One'), (2,'user3@email.com','User Two'), (3,'user3email.com','User Three')
ON DUPLICATE KEY UPDATE `id` = VALUES(`id`), `email` = VALUES(`email`), `name` = VALUES(`name`)