Doctrine orm 通过Doctrine2中的另一个实体获取访问权限

Doctrine orm 通过Doctrine2中的另一个实体获取访问权限,doctrine-orm,Doctrine Orm,我对与医生的联系有问题 我的实体映射是: 品牌: 型号: /** * @ORM\Entity */ class Model { /** * @ORM\Id */ protected $id; /** * @ORM\Column(type="string") */ protected $name; /

我对与医生的联系有问题

我的实体映射是: 品牌:

型号:

    /**
     * @ORM\Entity
     */
    class Model
    {
        /**
         * @ORM\Id
         */
        protected $id;

        /**
         * @ORM\Column(type="string")
         */
        protected $name;

        /**
         * @ORM\ManyToOne(targetEntity="AppBundle\Entity\VehicleType", inversedBy="models")
         * @ORM\JoinColumn(name="vehicle_type_id", referencedColumnName="id")
         */
        protected $vehicleType;

        /**
         * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Brand", inversedBy="models")
         * @ORM\JoinColumn(name="brand_id", referencedColumnName="id")
         */
        protected $brand;
    }
车辆类型:

    /**
     * @ORM\Entity
     */
    class VehicleType
    {
        /**
         * @ORM\Id
         */
        protected $id;

        /**
         * @ORM\Column(type="string")
         */
        protected $name;

        /**
         * @ORM\OneToMany(targetEntity="AppBundle\Entity\Model", mappedBy="vehicleType")
         */
        protected $models;
    }
如何进入流行品牌的实体车辆类型数组(brand.isPopular=true)? М可能是我的映射错误吗?

我可以这样做

$vehicleTypes = $this->getEm()->getRepository('AppBundle:VehicleType')->findAll();

    foreach ($vehicleTypes as $vehicleType) {
        print ('<p>'.$vehicleType->getName().'</p>');
        $brands = $this->getQb()
            ->select('brand')
            ->from('AppBundle:Brand', 'brand')
                ->join('brand.models', 'models')
            ->where('brand.isPopular = true')
                ->andWhere('models.vehicleType = :vehicleType')
            ->setParameter('vehicleType', $vehicleType)
            ->getQuery()
            ->getResult()
        ;
        foreach ($brands as $brand) {
            print('<p> - '.$brand->getNameEng().'</p>');
        }
    }
$vehicleTypes=$this->getEm()->getRepository('AppBundle:VehicleType')->findAll();
foreach($vehicleTypes作为$vehicleType){
打印(“”.$vehicleType->getName()。

”); $brands=$this->getQb() ->选择(“品牌”) ->发件人('AppBundle:Brand'、'Brand') ->加入('brand.models'、'models') ->其中('brand.isPopular=true') ->andWhere('models.vehicleType=:vehicleType') ->setParameter('vehicleType',$vehicleType) ->getQuery() ->getResult() ; foreach($brands作为$brand){ 打印(“-”.$brand->getNameEng()”

); } }
但我有n+1个查询到DB,其中n个VehicleType大小。是否可以取消数据库查询

$vehicleTypes = $this->getEm()->getRepository('AppBundle:VehicleType')->findAll();

    foreach ($vehicleTypes as $vehicleType) {
        print ('<p>'.$vehicleType->getName().'</p>');
        $brands = $this->getQb()
            ->select('brand')
            ->from('AppBundle:Brand', 'brand')
                ->join('brand.models', 'models')
            ->where('brand.isPopular = true')
                ->andWhere('models.vehicleType = :vehicleType')
            ->setParameter('vehicleType', $vehicleType)
            ->getQuery()
            ->getResult()
        ;
        foreach ($brands as $brand) {
            print('<p> - '.$brand->getNameEng().'</p>');
        }
    }