在zf1中,有一个函数Zend_Db_Table_Abstract::createRow()来创建一个新的空白行。然后可以操作新行并将其存储在表中。rowID是用autoincrement自动设置的,值由db模式的默认值填充。
我怎么能用ZF2做这个?是否有Zend_Db_Table_Abstract::createRow()的替代品?

最佳答案

在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;
    }
}

关于php - ZF2中的Zend_Db_Table_Abstract::createRow(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13958736/

10-15 10:33