Symfony条令数据类型仅在findBy而不是querybuilder中有效
我有自定义的数据类型,当使用FindBy时,它会按预期工作。。。但在使用查询生成器时不会。抱歉发了这么长的帖子,但我想更多的信息应该会有所帮助 这和这个未回答的问题是一样的: 数据类型: 实体: 存储库: 最后,控制器:Symfony条令数据类型仅在findBy而不是querybuilder中有效,symfony,doctrine-orm,Symfony,Doctrine Orm,我有自定义的数据类型,当使用FindBy时,它会按预期工作。。。但在使用查询生成器时不会。抱歉发了这么长的帖子,但我想更多的信息应该会有所帮助 这和这个未回答的问题是一样的: 数据类型: 实体: 存储库: 最后,控制器: 因此,简而言之,使用QueryBuilder时不会转换数据类型,只有在使用FindBy…时,才需要在实体配置中定义存储库类: /** * @ORM\Entity(repositoryClass=""AcmeDemoBundle\Entity\HippiesRepositor
因此,简而言之,使用QueryBuilder时不会转换数据类型,只有在使用FindBy…时,才需要在实体配置中定义存储库类:
/**
* @ORM\Entity(repositoryClass=""AcmeDemoBundle\Entity\HippiesRepository")
*/
class Hippie
{
// ...
}
有关更多信息,请参阅
更新:
您可能还想摆脱->select('hippie')
。当您使用该方法在repository类中创建QueryBuilder
时,该方法将自动为您调用select
和from
方法(有关详细信息,请参阅该文件)。在这种情况下,您需要做的就是:
$qb = $this->createQueryBuilder('hippie');
$qb->where('hippie.Sandals = :sandals')
->setParameter('sandals', $sandals);
return $qb->getQuery()->getResult();
再仔细考虑一下,使用查询生成器时不考虑自定义类型似乎是一致的。它们被附加到实体上,在查询中不相关,而查询只是一个查询。所以我想问题是:如何在存储库中的自定义类型中使用方法?
...
class HippiesRepository extends EntityRepository
{
public function useQueryBuilder($sandals){
$qb = $this->createQueryBuilder('hippie');
$qb->select('hippie')
->where('hippie.Sandals = :sandals')
->setParameter('sandals', $sandals);
return $qb->getQuery()->getResult();
}
}
public function hippiesAction()
{
// this returns an entity with $hippie1->sandals == 'doubleHippies: hippies: red'
// which is expected behaviour
$hippie1 = $em->getRepository('HappyHippiesBundle:Hippie')->findOneBySandals('red');
// this one returns no results, when checking queries run I see that
// $sandals value isn't translated in to 'hippies: red'
$hippie2 = $em->getRepository('HappyHippiesBundle:Hippie')->useQueryBuilder('red');
}
/**
* @ORM\Entity(repositoryClass=""AcmeDemoBundle\Entity\HippiesRepository")
*/
class Hippie
{
// ...
}
$qb = $this->createQueryBuilder('hippie');
$qb->where('hippie.Sandals = :sandals')
->setParameter('sandals', $sandals);
return $qb->getQuery()->getResult();