Pagination Phalcon:find()+分页器

Pagination Phalcon:find()+分页器,pagination,phalcon,paginator,Pagination,Phalcon,Paginator,我有一个MySQL数据库和一个表。任务是设置一个方法,该方法将接收2个参数?user\u id=…&action\u id。。。并搜索与这两个字段或其中一个字段匹配的记录(如果只设置了一个字段)?user_id=…,然后对它们进行分页并将它们发送到操作视图。我一周前才开始学习Phalcon,在这里和那里做了一些研究,阅读了文档,但仍然没有意识到我可以如何做到这一点。 到目前为止我所做的: public function searchAction() { $userID = $this-

我有一个MySQL数据库和一个表。任务是设置一个方法,该方法将接收2个参数?user\u id=…&action\u id。。。并搜索与这两个字段或其中一个字段匹配的记录(如果只设置了一个字段)?user_id=…,然后对它们进行分页并将它们发送到操作视图。我一周前才开始学习Phalcon,在这里和那里做了一些研究,阅读了文档,但仍然没有意识到我可以如何做到这一点。 到目前为止我所做的:

public function searchAction()
{

    $userID = $this->request->get("user_id", "int", 0);
    $actionID = $this->request->get("action_id", "int", 0);

    $currentPage = 1;
    $currentPage = (int) $_GET["page"];
    $parameters = array(
                'user_id' => $userID,
                'action_id' => $actionID
            );

            $o = History::find($parameters);

            $paginator = new Paginator(array(
                "data" => $o,
                "limit" => 10,
                "page" => $currentPage
            ));
            $page = $paginator->getPaginate();

            $this->view->setVar("page", $page);

}

分页在某种程度上起作用,但搜索却不起作用,为什么?

指的是官方文档


参数数组的索引必须与条件字符串中占位符的数量匹配。

方法find或findFirst中的第一个参数必须是一个字符串,以便为查询设置条件

在您的情况下,您可以这样搜索:

$o = History::find('user_id = "'.$userID.'" AND action_id = "'.$action_id.'"');
但是,如果要添加更多参数,则需要传递数组,并且第一个元素必须包含搜索条件:

$o = History::find(array(
   'user_id = "'.$userID.'" AND action_id = "'.$action_id.'"',
   'limit' => 10,
   'order' => 'user_id ASC'
));
$o = History::find(array(
   'user_id = "'.$userID.'" AND action_id = "'.$action_id.'"',
   'limit' => 10,
   'order' => 'user_id ASC'
));