Zend的框架查询TOP(Zend-framework Query TOP)

2019-10-20 04:05发布

你好,我尝试生成就这样在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);

但不工作

Answer 1:

你缺少代码中的一些细节,以便为它工作,

请参见下文。

$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



Answer 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,是不是做简单的事情,像跨平台的limittop 。 这只是我的两个便士。



文章来源: Zend-framework Query TOP