Doctrine:检查db中的任何值是否为输入的子字符串

时间:2015-11-15 08:04:34

标签: doctrine-orm dql

我想检查数据库中是否存在值的子字符串,在本例中为$ name。

我已经检查了here,但是SUBSTRING要求我将起始索引设置为参数。

LIKE与通配符似乎也没有帮助,因为它与我想要的完全相反:它检查输入是否是db-value的子字符串。

所以我想要的是检查db-value是否是变量$ name的子字符串。到目前为止,我试过这个:

$qb = $this->getEntityManager()->createQueryBuilder();
$qb
    ->select('d')
    ->from('MyBundle:MyEntity', 'd')
    ->where(
        $qb->expr()->eq($qb->expr()->substring('d.name',1), ':name')
    )
    ->setParameter('name', $name);

但现在还不是这样。任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

学说中有LOCATE功能,但我无法使其工作,所以我认为你可以使用LIKE来达到这样的基本要求。

public function findLeague($name)
{
    $qb = $this->createQueryBuilder('l');
    $qb
        ->select('l')
        ->where($qb->expr()->like('l.name', ':name'))
        ->setParameter('name', '%' . $name . '%');

    $qb = $qb->getQuery()->getResult();

    return $qb;
}

它将返回:

'1','Spanish Liga'
'3','German Bundes Liga'
'6','French Ligue One'
'7','Lig'