在ZF1中,有一个函数Zend_Db_Table_Abstract::createRow()
来创建一个新的空行。然后可以操纵该新行并将其存储在表中。使用自动增量自动设置rowID
,并使用数据库模式中的默认值填充值。
如何在 ZF2 中执行此操作?是否有Zend_Db_Table_Abstract::createRow()
替换?
答案 0 :(得分:1)
挖掘ZF2源代码我发现了如何获得原型。这受到Zend\Db\TableGateway\AbstractTableGateway::executeSelect()
和Zend\Db\ResultSet\ResultSet
的极大启发。为方便起见,我在AbstractMapper中使用了这个方法。您可能已经猜到这只适用于ResultSet
(而不是HydratingResultSet
)。但我想这也是你的情况,否则你不需要这样的方法。
<?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;
}
}
答案 1 :(得分:0)
您可以使用TableGateway:
$table= new TableGateway('users', $adapter);
$rowset = $table->insert(array('username' => 'bob'));