3

ZF1にはZend_Db_Table_Abstract::createRow()、新しい空白行を作成する機能がありました。次に、この新しい行を操作してテーブルに保存できます。はrowID自動インクリメントで自動的に設定され、値にはDBスキーマのデフォルト値が入力されました。

ZF2でこれを行うにはどうすればよいですか?の代替品はありZend_Db_Table_Abstract::createRow()ますか?

4

2 に答える 2

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;
    }
}
于 2013-02-13T14:39:53.520 に答える
0

TableGateway を使用できます。

$table= new TableGateway('users', $adapter);
$rowset = $table->insert(array('username' => 'bob'));
于 2013-01-23T11:36:35.570 に答える