Я пытаюсь получить все видео из БД, которые содержат ключевое слово. Это API REST-сборка с Symfony 3. Вот пример 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);
}
Результат должен быть в формате JSON с 4 видео .. но я получаю
{
"status": "success",
"total_items_count": 0,
"page_actual": 1,
"items_per_page": 6,
"total_pages": 0,
"data": []
}
где «data» — массив с видеоданными
Кто-нибудь знает, что я скучаю? DQL проконсультироваться .. это верно?
Кто-нибудь может сказать мне, в чем ошибка? Мне нужна подсказка .. DQL консультироваться правильно?
Я вижу, вы используете 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()
);
Спасибо за ваши повторы, ребята!
Итак … я допустил ошибку при наборе текста … и забыл знак $ перед поисковым словом ..
это была проблема
$query = $em->createQuery($dql)
->setParameter("search", "%search%"); <-- here
Огромное спасибо!!