你好,我尝试生成就这样在Zend的2查询
select top 10 * from mensaje where idUsuario = 11 order by fechaAltaMensaje DESC
我尝试使用此
$select = $sql->select();
$select->from('mensaje');
$select->where('idUsuario = '.$idUser.' order by fechaAltaMensaje DESC');
$select->limit(5);
但不工作
你缺少代码中的一些细节,以便为它工作,
请参见下文。
$adapter = $this->tableGateway->getAdapter();//use Zend\Db\TableGateway\TableGateway;
$sql = new Sql($adapter);//use Zend\Db\Sql\Sql;
$select = $sql->select();
$select->from('mensaje');
$select->where('idUsuario = '.$idUser.'');
$select->order('fechaAltaMensaje DESC');
$select->limit(5);
$selectString = $sql->getSqlStringForSqlObject($select);//print_r($selectString);die; //gives you the query in string
$results = $adapter->query($selectString, $adapter::QUERY_MODE_EXECUTE);
$resultSet = new ResultSet();//use Zend\Db\ResultSet\ResultSet;
$resultSet->initialize($results);
return $resultSet->toArray();//the result to array
请阅读下面的教程,你会得到完整的图片
例子
例子2
该limit
功能仅适用于支持它的平台上。 为了实现你以后在SQL你需要使用quantifier
功能。
还- where
接受的阵列column => value
对。
并且有一个order
接受列名和方向功能:
$select = $sql->select();
$select->from('mensaje')
->where(['idUsuario' => $idUser])
->order('fechaAltaMensaje DESC')
->quantifier('TOP(5)')
我并不高兴Zends执行的SQL抽象层,当你需要使用两个不同的函数编写SQL,是不是做简单的事情,像跨平台的limit
或top
。 这只是我的两个便士。