Symfony, Doctrine,我如何加载连接中的所有数据,但也加载数据行与没有数据的列


Symfony, Doctrine, how do I load all the data in a join but also load the data row with columns that have no data?

如果这个问题没有任何意义,我道歉。所以实际上我有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
 }
}