/** * Constructor * * @param string $table * @param Adapter $adapter * @param ResultSet $selectResultPrototype * @param Sql\Sql $selectResultPrototype */ public function __construct($table, Adapter $adapter, ResultSet $selectResultPrototype = null, Sql\Sql $sql = null) { if (!(is_string($table) || $table instanceof Sql\TableIdentifier)) { throw new \InvalidArgumentException('Table name must be a string or an instance of Zend\\Db\\Sql\\TableIdentifier'); } $this->table = $table; $this->adapter = $adapter; $this->setSelectResultPrototype($selectResultPrototype ?: new ResultSet()); $this->sql = $sql ?: new Sql\Sql($this->adapter, $this->table); if ($this->sql->getTable() != $this->table) { throw new Exception\InvalidArgumentException('The table inside the provided Sql object must match the table of this TableGateway'); } }
/** * @covers Zend\Db\Sql\Sql::__construct */ public function test__construct() { $sql = new Sql($this->mockAdapter); $this->assertFalse($sql->hasTable()); $sql->setTable('foo'); $this->assertSame('foo', $sql->getTable()); $this->setExpectedException('Zend\\Db\\Sql\\Exception\\InvalidArgumentException', 'Table must be a string or instance of TableIdentifier.'); $sql->setTable(null); }
/** * Get a Zend\Db\Sql\Sql object * * @param null|string|TableIdentifier $table default: self::DEFAULT_TABLE * @return \Zend\Db\Sql\Sql */ protected function sql($table = self::DEFAULT_TABLE) { if (self::DEFAULT_TABLE === $table) { if (null === $this->sql || $this->sql->getTable() != $this->getTableName()) { $this->sql = new Sql($this->getDbAdapter(), $this->getTableName()); } return $this->sql; } return new Sql($this->getDbAdapter(), $table); }