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
}
}