我无法从联接表中获取字段。这是我的情况,我有两个名为“query”和“region”的表,由两个 Controller QueryCOntroller 和 RegionController 处理。我尝试从 QueryController 将“查询”加入“区域”。在 View 文件中获取“查询”的“区域”名称的名称,但我无法获取所需的字段
public function fetchMine($myid)
{
$sql = new Sql( $this->tableGateway->adapter ) ;
$where = new Where() ;
$where->equalTo('agent_id', $myid) ;
$select = $sql->select() ;
$select -> from ( $this->tableGateway->getTable() )
-> join ( 'region' , 'query.agent_id = region.id')
->columns(array('*'))
-> where( $where ) ;
$resultSet = $this->tableGateway->selectWith($select);
return $resultSet;
}
在我的 Module.php 中,getServiceConfig()
'Management\Model\QueryTable' => function($sm) {
$tableGateway = $sm->get('QueryTableGateway');
$table = new QueryTable($tableGateway);
return $table;
},
'QueryTableGateway' => function ($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Query());
return new TableGateway('query', $dbAdapter, null, $resultSetPrototype);
},
最佳答案
尝试:
public function fetchMine($myid)
{
$select = new Select ();
$select->from ( $this->tableGateway->getTable() );
$select->join ( 'region' , 'query.agent_id = region.id' , Select::SQL_STAR , Select::JOIN_LEFT )
$select->where( array( 'agent_id'=>$myid ) );
$resultSet = $this->tableGateway->selectWith($select);
return $resultSet;
}
那么你必须从 Region
扩展 Query
以获得查询和区域的所有属性,
查询.php:
use Management\Model\Region;
class Query extends Region
{
//...
}
关于mysql - Zend Framework 2 无法从联接表中获取字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20180801/