Doctrine - 在多个表中搜索不返回任何内容

时间:2014-06-09 12:00:34

标签: php mysql sql symfony doctrine-orm

我尝试使用Doctrine DQL创建搜索查询。我必须通过提供者标准搜索多个表格。

问题是,它什么都不返回。知道那些符合条件的行。

这是我的疑问:

public function getResults($query)
{
    $q = $this->em->createQuery(
        "
            select u, pr, t, ex
            from Zgh\FEBundle\Entity\User u,
                 Zgh\FEBundle\Entity\Product pr,
                 Zgh\FEBundle\Entity\Tip t,
                 Zgh\FEBundle\Entity\Experience ex
            where u.firstname like :crit
            or pr.name like :crit
            or t.title like :crit
            or ex.title like :crit
        "
    );
    $q->setParameter("crit", "%" .  strtolower($query) . "%");
    return $q->execute();
}

这是我的控制器动作:

public function postSearchAction(Request $request)
{
    $query = $request->query->get("q");
    $result = $this->get("zgh_fe.search_manager")->getResults($query);
    var_dump($query);
    var_dump($result);
    die;
}

注意当我从查询中删除最后两个表时,它会返回结果。

public function getResults($query)
{
    $q = $this->em->createQuery(
        "
            select u, pr
            from Zgh\FEBundle\Entity\User u,
                 Zgh\FEBundle\Entity\Product pr,
            where u.firstname like :crit
            or pr.name like :crit
        "
    );
    $q->setParameter("crit", "%" .  strtolower($query) . "%");
    return $q->execute();
}

生成的SQL查询:https://gist.github.com/rafaeladel/2f37748a732c9393a07f

0 个答案:

没有答案