ZF2中的Zend_Db_Table_Abstract :: createRow()

时间:2012-12-19 18:27:28

标签: php database zend-framework2

在ZF1中,有一个函数Zend_Db_Table_Abstract::createRow()来创建一个新的空行。然后可以操纵该新行并将其存储在表中。使用自动增量自动设置rowID,并使用数据库模式中的默认值填充值。

如何在 ZF2 中执行此操作?是否有Zend_Db_Table_Abstract::createRow()替换?

2 个答案:

答案 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'));