Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony条令数据类型仅在findBy而不是querybuilder中有效_Symfony_Doctrine Orm - Fatal编程技术网

Symfony条令数据类型仅在findBy而不是querybuilder中有效

Symfony条令数据类型仅在findBy而不是querybuilder中有效,symfony,doctrine-orm,Symfony,Doctrine Orm,我有自定义的数据类型,当使用FindBy时,它会按预期工作。。。但在使用查询生成器时不会。抱歉发了这么长的帖子,但我想更多的信息应该会有所帮助 这和这个未回答的问题是一样的: 数据类型: 实体: 存储库: 最后,控制器: 因此,简而言之,使用QueryBuilder时不会转换数据类型,只有在使用FindBy…时,才需要在实体配置中定义存储库类: /** * @ORM\Entity(repositoryClass=""AcmeDemoBundle\Entity\HippiesRepositor

我有自定义的数据类型,当使用FindBy时,它会按预期工作。。。但在使用查询生成器时不会。抱歉发了这么长的帖子,但我想更多的信息应该会有所帮助

这和这个未回答的问题是一样的:

数据类型: 实体: 存储库: 最后,控制器:
因此,简而言之,使用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();