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

Zend framework2 在Zend Framework 2中使用INSERT Ignore忽略重复项,zend-framework2,Zend Framework2,我有一个表,其中一个字段是唯一的,并且有一些记录。我需要在不使查询失败的情况下插入一些新记录(表中可能已经存在一些记录) 在普通的MySQL中;我可以使用忽略关键字作为插入忽略… 如何在Zend Framework 2DB中指定INSERT IGNORE,如果您愿意,您仍然可以在普通MySQL中这样做 $sql=“插入…” 如果您正在使用tablegateway或定义适配器,请像这样获取适配器 如果使用\Zend\Db\Sql\Insert可以创建扩展类并重写getSqlString(…):

我有一个表,其中一个字段是唯一的,并且有一些记录。我需要在不使查询失败的情况下插入一些新记录(表中可能已经存在一些记录)

在普通的MySQL中;我可以使用忽略关键字作为插入忽略…


如何在Zend Framework 2DB

中指定INSERT IGNORE,如果您愿意,您仍然可以在普通MySQL中这样做

$sql=“插入…”

如果您正在使用tablegateway或定义适配器,请像这样获取适配器


如果使用
\Zend\Db\Sql\Insert
可以创建扩展类并重写
getSqlString(…)


\src\MyNamespace\Zend\Db\Sql\Insert.php

我正在使用这个:

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',
    ];
}
实际上

//$action = $sql->insert(); // Before
$action = new InsertIgnore($sql->getTable()); // After
$action->values($data);

谢谢@dixromos98。我目前正在使用查询方法。ZF2中是否有执行INSERT IGNORE查询的本机方法?能否修改INSERT查询的答案?因为问题是关于插入查询的;其他人查看答案会更好。我四处查看了一下,但似乎不支持插入忽略。正如我在教程中看到的,正在使用的绕过逻辑是检查主键是否存在,然后对该行执行更新。这是如果您不希望使用普通查询
//$action = $sql->insert(); // Before
$action = new InsertIgnore($sql->getTable()); // After
$action->values($data);