我想知道这在教义ORM symfony中是否可能。我有一个产品清单。每个产品都有一个标题。假设他们的标题是:
1. Great Mango
2. Show Mango
3. King Mango
我用这个学说来找标题
$repository->findByTitle("Mango");
但我什么也没显示。如果我完成标题以像"芒果王"一样搜索它。它显示但不显示带有MANGO单词的列表。
我使用此链接作为参考。 但是,如果您有更多有关此的文档。我很高兴从中学习。
要在 where 子句中使用like
,您必须将where
条件与 setParameter
一起使用。查询如下:
$title = 'Mango';
$query = $repository->createQueryBuilder('a')
->where('a.title LIKE :title')
->setParameter('title', '%'.$title.'%')
->getQuery();
魔术方法仅适用于精确搜索。要使用 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();
}