如何在学说ORM中搜索单词?

use*_*576 3 php orm doctrine symfony doctrine-orm

我想知道这在 ORM symfony 学说中是否可行。我有一个产品清单。每个产品都有一个标题。假设他们的头衔是:

1. Great Mango
2. Show Mango
3. King Mango
Run Code Online (Sandbox Code Playgroud)

我用这个学说找标题

$repository->findByTitle("Mango");
Run Code Online (Sandbox Code Playgroud)

但我什么也没显示。如果我完成标题搜索它像“芒果王”。它显示但不显示带有 MANGO 单词的列表。

我使用此链接作为参考。但是如果您有更多关于此的文档。我很高兴从中学习。

Bar*_*ada 5

魔术方法仅适用于精确搜索。要使用LIKE语句,您必须创建自己的存储库,如下所述: http: //symfony.com/doc/current/doctrine/repository.html

拥有自己的存储库类后,创建一个LIKE在查询中使用的方法:

public function findByTitlePart($title)
{
    return $this->getEntityManager()
        ->createQuery(
            'SELECT p FROM AppBundle:Product p WHERE p.title LIKE :title'
        )
        ->setParameter('title', '%' . $title . '%')
        ->getResult();
}
Run Code Online (Sandbox Code Playgroud)


小智 5

like在 where 子句中使用 a ,您必须将where条件与 一起使用setParameter。查询如下:

$title = 'Mango';
$query = $repository->createQueryBuilder('a')
           ->where('a.title LIKE :title')
           ->setParameter('title', '%'.$title.'%')
           ->getQuery();
Run Code Online (Sandbox Code Playgroud)