Php Symfony,Doctrine,如何加载联接中的所有数据,但同时加载数据行中没有数据的列?

Php Symfony,Doctrine,如何加载联接中的所有数据,但同时加载数据行中没有数据的列?,php,sql,symfony,doctrine-orm,Php,Sql,Symfony,Doctrine Orm,如果这个问题没有任何意义,我道歉。所以基本上我有三个表,表一,表二,表三,它们是连接在一起的。表一与表二为一元关系,表二与表三为一元关系 for($i=0;$i<count($pkg);$i++) { $twoid = $pkg[$i]['packageNo']; $getthree = $em->getRepository('Bundle:Three') ->findOneByTwoId($twoid);

如果这个问题没有任何意义,我道歉。所以基本上我有三个表,表一,表二,表三,它们是连接在一起的。表一与表二为一元关系,表二与表三为一元关系

    for($i=0;$i<count($pkg);$i++) {
        $twoid = $pkg[$i]['packageNo'];

        $getthree = $em->getRepository('Bundle:Three')
            ->findOneByTwoId($twoid);
    }
这些表包含以下列:

一个

两个

因此,这些数据中只有一部分具有表3中的
dateout
,因为它是可选的。当我列出表1、表2和表3中的数据时,条令只是清楚地列出了具有
日期的行。我希望它列出所有的行,即使它没有一个
dateout
,并将该表单元格设置为空

这就是我所尝试的:

 $pkg = $em->getRepository('Bundle:Two')
        ->findInventoryByPkgno($packageNo);
我首先尝试通过执行一个查询,通过
package\u no
获取数据,它将提供表1和表2中的数据,然后我执行了一个for循环来获取每个
Two\u id
以从表3中获取数据

    for($i=0;$i<count($pkg);$i++) {
        $twoid = $pkg[$i]['packageNo'];

        $getthree = $em->getRepository('Bundle:Three')
            ->findOneByTwoId($twoid);
    }
for($i=0;$igetropository($Bundle:Three'))
->findOneByTwoId($twoid);
}
但后来我意识到当我把它输出到twig时,它只会列出一个结果


这可能吗?

您是否已在实体中配置映射/反转

一:

第二:

/**
 * @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
 }
}

我不是试图列出存储库中的所有数据,而是按实体列出。例如,在本例中,我希望按其包#查找所有数据。使用findByTwoId($twoid)代替findOneByTwoId($twoid);这将为您提供一个数组。但是请仔细阅读@Roberto编写的内容。如果您的关系设置正确,那么就不需要捆绑包:三个查询。加载包将为您提供批次和日期信息。花一些时间查看《条令2》手册中的关系章节。
/**
 * @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
 }
}