Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在不选择zend_db_的情况下执行zend分页_Php_Performance_Zend Framework_Pagination - Fatal编程技术网

Php 在不选择zend_db_的情况下执行zend分页

Php 在不选择zend_db_的情况下执行zend分页,php,performance,zend-framework,pagination,Php,Performance,Zend Framework,Pagination,这只是一个示例,但我的应用程序中的大多数查询如下所示: public function getCommentsByPost($postid) { $db = Zend_Registry::get('db'); $sql = 'SELECT * FROM comments c LEFT JOIN users u ON u.user_id = c.comment_userid WHERE c.comment_postid = ?'; $statement = $db-

这只是一个示例,但我的应用程序中的大多数查询如下所示:

public function getCommentsByPost($postid)
{
$db = Zend_Registry::get('db');
$sql = 'SELECT * FROM comments c
        LEFT JOIN users u ON u.user_id = c.comment_userid
        WHERE c.comment_postid = ?';
$statement = $db->query($sql, array($postid));
$rows = $statement->fetchAll();
$comment = null;
foreach($rows as $row){
    $comment = new Model_Comment();
    $comment->populate($row);
    $this->list[] = $comment;
}
return $this->getList();
}

我不使用zend_db_select,因为通常会涉及很多连接,并且查询非常复杂。但是我需要为我的页面列表添加分页,而且我担心使用数组适配器不会非常有效,因为Zend会从我的“posts”表中选择每一行。有没有办法解决这个问题,或者我应该实现自己的分页功能?

没有办法将SQL字符串输入Zend Select对象。这需要一个SQL解析器,而ZF没有


您必须将语句重构到Zend Select对象中,这有时会非常烦人和困难,我在第一个ZF项目中没有这样做。我希望我现在就这样做,因为这是最好的方式,并确保您可以利用所有额外的功能,例如分页。

我在zend_db_select模型中使用了类似于以下的功能,它可以与zend分页一起使用

$select = $this->model->select(Zend_Db_Table::SELECT_WITH_FROM_PART)
                ->setIntegrityCheck(false);
$select->where('table1.field = ?', $field)
       ->join('table2','table1.field = table2.feild')
       ->where('table2.field = ?', $field)
       ->order('field DESC');
$object = $this->model->fetchAll($select);