如果这个问题没有任何意义,我道歉。所以实际上我有3个表,表一,表二,表三它们是连在一起的。表1与表2是OneToMany关系,表2与表3是OneToMany关系。
表有以下列:
一id | package_no | weight | dimensions
两个id | one_id | rack_no | part_no | batch_no
3
id | two_id | datein | dateout
所以这些数据中只有一些具有表3中的dateout
,因为它是可选的。当我列出表1、表2和表3中的数据时,Doctrine只清楚地列出了具有dateout
的行。我希望它列出所有的行,即使它没有一个dateout
,并有该表单元格为空。
这是我尝试过的:
$pkg = $em->getRepository('Bundle:Two')
->findInventoryByPkgno($packageNo);
我首先尝试做一个查询,通过package_no
抓取数据,它将从表1和表2中给我数据,然后我做了一个for循环来抓取每个two_id
以从表3中获取数据。
for($i=0;$i<count($pkg);$i++) {
$twoid = $pkg[$i]['packageNo'];
$getthree = $em->getRepository('Bundle:Three')
->findOneByTwoId($twoid);
}
但后来我意识到,当我把它输出到twig时,它只会列出一个结果…
这可能吗?
您是否在实体中配置了映射/反转?
:
/**
* @ORM'OneToMany(targetEntity="Two",mappedBy="one",cascade={"persist","remove"})
*/
private $twos;
public function __construct()
{
$this->twos = new ArrayCollection();
}
public function getTwos()
{
return $this->twos;
}
和两个:
/**
* @ORM'ManyToOne(targetEntity="One",inversedBy="twos")
*/
private $one;
public function getOne(){
return $this->one;
}
和你可以做的控制器:
$ones = $em->getRepository('Bundle:One')->findAll();
foreach($ones as $one){
foreach($one->getTwos() as $two){
//Access entity $two
}
}