Php Ajax搜索过滤器

Php Ajax搜索过滤器,php,jquery,mysql,ajax,symfony,Php,Jquery,Mysql,Ajax,Symfony,我有一个“内容”表,您可以为内容分配类别 class Content { private $name; private $categories; ... ... ... public function __construct() { $this->categories = new \Doctrine\Common\Collections\ArrayCollection(); } public

我有一个“内容”表,您可以为内容分配类别

class Content
{

    private $name;

    private $categories;

    ...
    ...
    ...

    public function __construct()
    {
        $this->categories = new \Doctrine\Common\Collections\ArrayCollection();
    }

    public function addCategories(\Publicartel\AppBundle\Entity\Category $categories)
    {
        $this->categories[] = $categories;

        return $this;
    }

    public function removeCategories(\Publicartel\AppBundle\Entity\Category $categories)
    {
        $this->categories->removeElement($categories);
    }

    public function setCategories(\Publicartel\AppBundle\Entity\Category $categories = null)
    {
        $this->categories = $categories;

        return $this;
    }

    public function getCategories()
    {
        return $this->categories;
    }

}
然后我进行查询以查找所有类别并将它们显示在页面上

$categories = $em->getRepository('PublicartelAppBundle:Category')->getAllCategories();

public function getAllCategories()
    {

    $em = $this->getEntityManager();

    $dql = 'SELECT c FROM Publicartel\AppBundle\Entity\Category c';

    $query = $this->getEntityManager()
        ->createQuery($dql)
        ->setHydrationMode(\Doctrine\ORM\Query::HYDRATE_ARRAY);

    return $query->execute();
}
显示模板细枝中的所有类别

<div class="form-group">
            <label for="publicartel_appbundle_category_name">Buscar por categoría:</label>
            <select id='selectCategory' class="form-control select2">
                {% for categories in categories %}
                    <option>
                        {{ categories.name }}
                    </option>
                {% endfor %}
            </select>
        </div>
显示所选类别内容的查询:

public function findByCategory($category)
    {
        $em = $this->getEntityManager();

    $dql = 'SELECT c FROM Publicartel\AppBundle\Entity\Content c';

    if (!is_null($category)) {
        $dql .= " WHERE c.categories.name LIKE :category";
    }

    $query = $this->getEntityManager()
        ->createQuery($dql)
        ->setHydrationMode(\Doctrine\ORM\Query::HYDRATE_ARRAY);

    if (!is_null($category)) {
        $query->setParameter('category', '%'.$category.'%');
    }

    return $query->getResult();
}
但控制台总是显示相同的结果,但在我的选择中选择不同的选项


就是选择您选择的选项,总是显示相同的结果。

我不知道类别名称是什么样的,但这里有一个可能的错误:

$dql .= " WHERE c.categories.name LIKE :category";

如果类别以相同的字母开头,将导致始终显示相同的类别

尝试将
$dql
变量的
部分更改为
=

$dql .= " WHERE c.categories.name LIKE :category";
{% for contentCategory in catContent %}
    var nameContent =  '{{ contentCategory.name }}';
    console.log(nameContent);
{% endfor %}