【问题标题】:How to search a word in doctrine ORM?如何在学说ORM中搜索单词?
【发布时间】:2017-06-16 12:30:11
【问题描述】:

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

1. Great Mango
2. Show Mango
3. King Mango

我用这个学说来找题目

$repository->findByTitle("Mango");

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

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

【问题讨论】:

    标签: php symfony doctrine-orm orm doctrine


    【解决方案1】:

    魔术方法仅适用于精确搜索。要使用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();
    }
    

    【讨论】:

      【解决方案2】:

      要在 where 子句中使用 like,您必须使用 where 条件和 setParameter。 查询如下:

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

      【讨论】:

        猜你喜欢
        • 2010-11-21
        • 1970-01-01
        • 2011-05-27
        • 1970-01-01
        • 2018-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多