我对 Zend Framework 和 php 非常陌生。
我完成了 Zend Framework 2 教程并尝试使用 AbstractTableGateway 来查询多个表。
但在网页上收到以下消息:
提供的选择对象的表名称必须与表的名称匹配
这是我的代码的一部分:
类 PublicationTable 扩展 AbstractTableGateway {
protected $table = 'publication';
public function fetchAll()
{
$sql = new Sql($this->adapter);
$select = $sql->select();
$select->from(array('p' => 'publication'))
->join('author','publication_fk=p.publication_pk');
$resultSet = $this->selectWith($select);
return $resultSet;
}
...
}
我知道变量“protected $table”是一个字符串。 那么如何解决这个问题呢? 感谢您的帮助!
EC
最佳答案
from()
方法采用表名,而不是列列表。使用columns()
指定所需的列。我从未尝试过从 TableGateway 进行连接,但 TableGateway 并不是最好的遵循模式。
如果您直接使用 DbAdapater,那么类似这样的事情应该可以工作:
use Zend\Db\Sql\Select,
Zend\Db\ResultSet\ResultSet;
$select = new Select;
$select->from('publication')
->join('author', 'publication.publication_pk = author.publication_fk',
array('columnnamefromauthortable1', 'columnnamefromauthortable2'));
$statement = $adapter->createStatement();
$select->prepareStatement($adapter, $statement);
$resultSet = new ResultSet();
$resultSet->initialize($statement->execute());
关于zend-framework2 - zend框架2教程AbstractTableGateway,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12842325/