1

我正在尝试从包含关键字的数据库中获取所有视频,这是使用 Symfony 3 构建的 API REST。这是 URL 的示例

http://localhost/Server/symfony/web/app_dev.php/video/search/prueba

“prueba”是我要查找的关键字

这是功能..

public function searchAction(Request $request, $search = null){
    $helper = $this->get("app.helper");
    $em = $this->getDoctrine()->getManager();
    if($search != null){
        $dql = "SELECT v.title FROM BackendBundle:Video v "
                . "WHERE v.title LIKE :search OR "
                . "v.description LIKE :search ORDER BY v.id DESC";

        $query = $em->createQuery($dql)
                ->setParameter("search", "%search%");
    } else {
        $dql = "SELECT v FROM BackendBundle:Video v ORDER BY v.id DESC";
        $query = $em->createQuery($dql);
    }
    $page = $request->query->getInt("page", 1);
    $paginator = $this->get("knp_paginator");
    $items_per_page = 6;
    $pagination = $paginator->paginate($query, $page, $items_per_page);

    $total_items_count = $pagination->getTotalItemCount();
    $data = array(
        "status" => "success",
        "total_items_count" => $total_items_count,
        "page_actual" => $page,
        "items_per_page" => $items_per_page,
        "total_pages" => ceil($total_items_count/$items_per_page),
        "data" => $pagination
    );
    return $helper->toJson($data);
}

结果应该是一个带有 4 个视频的 JSON .. 但我明白了

{
    "status": "success",
    "total_items_count": 0,
    "page_actual": 1,
    "items_per_page": 6,
    "total_pages": 0,
    "data": []
}

其中“data”是一个包含视频数据的数组

有人知道我想念什么吗?dql 咨询.. 正确吗?

有人可以告诉我是什么错误吗?我需要一个线索.. dql 咨询是否正确?

4

2 回答 2

0

谢谢你们的重播!

所以..我在输入时犯了一个错误..我忘记在搜索词之前签名 $..

这就是问题所在

    $query = $em->createQuery($dql)
            ->setParameter("search", "%search%"); <-- here 

太感谢了!!

于 2017-12-10T23:30:50.153 回答
0

我看到你使用knp_paginator服务。尝试从分页器中获取项目,如下所示:

$data = array(
    "status" => "success",
    "total_items_count" => $total_items_count,
    "page_actual" => $page,
    "items_per_page" => $items_per_page,
    "total_pages" => ceil($total_items_count/$items_per_page),
    "data" => $pagination->getItems()
);
于 2017-12-07T23:27:10.633 回答