在Zend Framework 2中使用INSERT IGNORE忽略重复项

Fin*_*ham 2 zend-framework2

我有一个表,其中一个字段是唯一的,并在其中有一些记录.我需要插入一些新记录(表中可能已存在某些记录),而不会使查询失败.

在普通的MySQL中 ; 我可以使用IGNORE关键字将查询编写为INSERT IGNORE ...

如何在Zend Framework 2 DB中指定INSERT IGNORE

B.A*_*lin 6

我正在使用这个:

use Zend\Db\Sql\Insert;

class InsertIgnore extends Insert
{
    /**
     * @var array Specification array
     */
    protected $specifications = [
        self::SPECIFICATION_INSERT => 'INSERT IGNORE INTO %1$s (%2$s) VALUES (%3$s)',
        self::SPECIFICATION_SELECT => 'INSERT IGNORE INTO %1$s %2$s %3$s',
    ];
}
Run Code Online (Sandbox Code Playgroud)

在实践中

//$action = $sql->insert(); // Before
$action = new InsertIgnore($sql->getTable()); // After
$action->values($data);
Run Code Online (Sandbox Code Playgroud)