我正在尝试为我的Table对象创建一个抽象对象。
现在,我有很多对象,比如:CategoriaTable、FornecedoresTable等,它们实现了$this->tableGateway->insert()、$this->tableGateway->update()等
我创建了一个包含大多数功能的TableAbstract,但我坚持一个问题:
// In CategoriaTable my table id is named cat_id
$this->tableGateway->update($object->getArrayCopy(),array('cat_id' => $object->getId()))
// But in FornecedoresTable my table id is named for_id
$this->tableGateway->update($object->getArrayCopy(),array('for_id' => $object->getId()))如何从tableGateway获取表的id?有没有更好的方法来做我想做的事?
我想我可以将id名称注入到我的对象中,但我不认为这是一个好方法。
发布于 2013-05-19 01:35:34
您可以创建新的主类参数(在我的示例中,我创建了$ TableGateway ->TableGateway;)
如果没有设置,使用Zend\ db \Metadata\Metadata直接从数据库结构中查找。
<?php
//...
use Zend\Db\TableGateway\AbstractTableGateway;
use Zend\Db\Metadata\Metadata;
class AbstractTable extends AbstractTableGateway
{
protected $primary;
public function getPrimary()
{
if (null === $this->primary) {
$metadata = new Metadata($this->adapter);
$constraints = $metadata->getTable($this->getTable()->getTable())
->getConstraints();
foreach ($constraints AS $constraint) {
if ($constraint->isPrimaryKey()) {
$primaryColumns = $constraint->getColumns();
$this->primary = $primaryColumns;
}
}
}
return $this->primary;
}
}
?>https://stackoverflow.com/questions/13646338
复制相似问题