顾问实体
<?php
namespace Entity;
/**
* @Entity
* @Table(name="consultant")
*/
class Consultant{
/**
* @Id
* @Column(type="integer", nullable=false)
* @GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
}
Paitent Entity
<?php
namespace Entity;
/**
* @Entity
* @Table(name="patient")
*/
class Patient{
/**
* @Id
* @Column(type="integer", nullable=false)
* @GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* Many Patients belogns to a single consultant.
* @ManyToOne(targetEntity="consultant")
* @JoinColumn(name="consultant_id", referencedColumnName="id", nullable=false)
*/
private $consultant;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set consultant
*
* @param Entityconsultant $consultant
*
* @return Patient
*/
public function setConsultant(Entityconsultant $consultant)
{
$this->consultant = $consultant;
$consultant->addPatient($this);
return $this;
}
/**
* Get consultant
*
* @return Entityconsultant
*/
public function getConsultant()
{
return $this->consultant;
}
}
查询构建器
$qb = $this->em->createQueryBuilder();
$qb
->select('p')
->from('EntityConsultant', 'c')
->innerJoin('EntityPatient', 'p', 'c.id = p.consultant_id')
->where('c.id = ?1')
->setParameter(1, 1)
$query = $qb->getQuery();
$results = $query->getResult();
问题
我需要让所有属于特定顾问的患者,目前我正在使用上述查询构建器查询。如果是,该如何在学说2中进行?而且还欢迎其他任何优化技术。
学说会自动在外键字段上创建索引,因此无需尝试手动添加一个索引。同样,要使所有属于顾问的患者都不需要加入,如问题所示,可以使用更简单的查询,如下所述。
新查询
$qb = $this->em->createQueryBuilder();
$qb
->select('p.name')
->from('EntityPatient', 'p')
->where('p.consultant = ?1')
->setParameter(1, 1);