zend2 mysql - 使用 TableGateway 加入 table
zend2 mysql - joining table using TableGateway
我想从两个 mySql tables:
获取数据
SELECT L.id AS 'l_id', L.date, L.action, U.id AS 'u_id', U.name, U.surname
FROM cases_log L, users U
WHERE L.user = U.id
LIMIT 0,30
所以,我决定使用 $select->join,但它无法按我想要的方式工作。它仅从 cases_log table.
获取数据
SELECT *
FROM `cases_log`
JOIN users
ON users.id = cases_log.user
Module.php:
'HistoryTable' => function($sm)
{
$tableGateway = $sm->get('HistoryTableGateway');
$table = new HistoryTable($tableGateway);
return $table;
},
'HistoryTableGateway' => function ($sm)
{
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new History());
return new TableGateway('cases_log', $dbAdapter, null, $resultSetPrototype);
},
HistoryTable.php:
$table = $this->tableGateway;
$select = $table->getSql()->select();
//$select->from(array('L' => 'cases_log'))->join(array('U' => 'users'),'L.user = U.id');
$select->join('users', 'users.id = cases_log.user');
$select->limit(10);
$select->offset(0);
$resultSet = $table->selectWith($select);
return $resultSet;
如您所见,在注释行中,我尝试在 $select->from 中执行某些操作 - 但没有结果,因为 $select->from 是只读的。 ..
我是 ZF2 的新手,所以我可能错过了一些东西?
$table = $this->tableGateway;
$select = $table->getSql()->select();
$select->columns(['l_id' => 'id', 'date', 'action']);
$select->join('users', 'users.id = cases_log.user', ['u_id' => 'id', 'name', 'surname']);
$select->limit(10);
$select->offset(0);
生成正确的 sql(table 的别名除外)
我想从两个 mySql tables:
获取数据SELECT L.id AS 'l_id', L.date, L.action, U.id AS 'u_id', U.name, U.surname
FROM cases_log L, users U
WHERE L.user = U.id
LIMIT 0,30
所以,我决定使用 $select->join,但它无法按我想要的方式工作。它仅从 cases_log table.
获取数据SELECT *
FROM `cases_log`
JOIN users
ON users.id = cases_log.user
Module.php:
'HistoryTable' => function($sm)
{
$tableGateway = $sm->get('HistoryTableGateway');
$table = new HistoryTable($tableGateway);
return $table;
},
'HistoryTableGateway' => function ($sm)
{
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new History());
return new TableGateway('cases_log', $dbAdapter, null, $resultSetPrototype);
},
HistoryTable.php:
$table = $this->tableGateway;
$select = $table->getSql()->select();
//$select->from(array('L' => 'cases_log'))->join(array('U' => 'users'),'L.user = U.id');
$select->join('users', 'users.id = cases_log.user');
$select->limit(10);
$select->offset(0);
$resultSet = $table->selectWith($select);
return $resultSet;
如您所见,在注释行中,我尝试在 $select->from 中执行某些操作 - 但没有结果,因为 $select->from 是只读的。 ..
我是 ZF2 的新手,所以我可能错过了一些东西?
$table = $this->tableGateway;
$select = $table->getSql()->select();
$select->columns(['l_id' => 'id', 'date', 'action']);
$select->join('users', 'users.id = cases_log.user', ['u_id' => 'id', 'name', 'surname']);
$select->limit(10);
$select->offset(0);
生成正确的 sql(table 的别名除外)