Php ZF2中的Zend_Db_Table_Abstract::createRow()
在ZF1中,有一个函数Php ZF2中的Zend_Db_Table_Abstract::createRow(),php,database,zend-framework2,Php,Database,Zend Framework2,在ZF1中,有一个函数Zend\u Db\u Table\u Abstract::createRow()来创建一个新的空行。然后可以对新行进行操作并将其存储在表中。rowID是使用autoincrement自动设置的,并且使用DB模式中的默认值填充值 如何在ZF2中执行此操作?是否有一个替代品可以替代Zend\u Db\u Table\u Abstract::createRow()?您可以使用TableGateway: $table= new TableGateway('users', $ada
Zend\u Db\u Table\u Abstract::createRow()
来创建一个新的空行。然后可以对新行进行操作并将其存储在表中。rowID
是使用autoincrement自动设置的,并且使用DB模式中的默认值填充值
如何在ZF2中执行此操作?是否有一个替代品可以替代Zend\u Db\u Table\u Abstract::createRow()?您可以使用TableGateway:
$table= new TableGateway('users', $adapter);
$rowset = $table->insert(array('username' => 'bob'));
深入研究ZF2源代码,我发现了如何恢复原型。这是受到
Zend\Db\TableGateway\AbstractTableGateway::executeSelect()
和Zend\Db\ResultSet\ResultSet
的启发。为了方便起见,我在AbstractMapper中使用了这个方法。您可能已经猜到,这只适用于ResultSet
(与ResultSet
相反)。但我想这也是你的情况,否则你就不需要这种方法了
<?php
namespace Application\Mapper;
use Zend\Db\TableGateway\TableGateway;
class AbstractMapper
{
/**
* @var \Zend\Db\TableGateway\TableGateway
*/
protected $tableGateway;
public function __construct(TableGateway $tableGateway)
{
$this->tableGateway = $tableGateway;
}
/**
* Create and returns a new row which is not yet saved in database
* @return AbstractModel
*/
public function createRow()
{
$resultSet = $this->tableGateway->getResultSetPrototype();
$newRow = clone $resultSet->getArrayObjectPrototype();
return $newRow;
}
}
这将在数据库中创建一条记录,这可能不是期望的效果。我们可能需要一个“临时”对象。