使用 like 参数在 Symfony 5 中搜索表单没有 return 结果

Search form in Symfony 5 with like parameter does not return results

我正在尝试 return 仅搜索表单的结果,但函数 return 有 0 个结果。 我没有收到任何错误,但我的结果丢失了,经过几天的搜索,我仍然不明白我做错了什么。提前致谢。

我想在表单中输入一个参数,return 点击提交按钮后的结果。

这里是存储库函数:

public function findAllWithSearch(?string $cont)
    {
        return $this->_em->getConnection()->executeQuery(
            "select cont from account_links al 
                where  al.cont like :cont
                ",['cont'=>'%"' .$cont . '"%']
        )->fetchAllAssociative();
    }

控制器函数如下:

public function searchAction(Request $request,AccountLinksRepository $repository)
    {
        $searchForm=$this->createFormBuilder()
            ->add('cont')
            ->add('search',SubmitType::class)
            ->getForm();
        $searchForm->handleRequest($request);
        if($searchForm->isSubmitted() && $searchForm>isValid()){

             $data = $searchForm->getData();
             $cont = $data['cont'];

             $links = $repository->findAllWithSearch($cont);

             return $this->render('account_links/search.html.twig', [
                 'account_links' => $links]);

        }

        return $this->render('account_links/index.html.twig',[
            'form'=>$searchForm->createView(),

        ]);
    }

search.html.twig中:

<form>
<div class="input-group mb-3">
    <input type="text"
           name="q"
           class="form-control"
           placeholder="Search..."
    >
    <div class="input-group-append">
        <button type="submit"
                class="btn btn-outline-secondary">
            <span class="fa fa-search"></span>
        </button>
    </div>
</div>
</form> 

index.html.twig中:

{% for account_link in account_links %}
    <tr>
        <td>{{ account_link.id }}</td>
        <td>{{ account_link.subscriber }}</td>
        <td>{{ account_link.cont }}</td>
        <td>{{ account_link.client }}</td>
        <td>{{ account_link.relationshipType }}</td>
{% endfor %}
  1. 看起来你的树枝位置不对(反了)
  2. 如果您在 twig 中手动定义表单,则不需要使用 createFormBuilder
  3. 避免使用 sql 查询字符串,例如 select * from account_links

存储库

public function findAllWithSearch(?string $cont)
    {
        return $this->createQueryBuilder('o')
            ->andWhere('d.cont like :val')
            ->setParameter('val', '%'.$value.'%')
            ->getQuery()
            ->getResult();
    }

控制器

public function searchAction(Request $request,AccountLinksRepository $repository)
    {
         if('POST' === $request->getMethod()) {

             
             $search = $request->request->get('q');

             $links = $repository->findAllWithSearch($cont);

             return $this->render('account_links/search.html.twig', [
                 'account_links' => $links
             ]);

         }

         return $this->render('account_links/index.html.twig',[
             'form'=>$searchForm->createView(),

         ]);
    }