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>');
}
}