【发布时间】:2018-01-08 14:45:59
【问题描述】:
我尝试获取我的所有对象 DemandCab 及其子对象 (DecisionCab)。
我的 2 个实体
/**
* DemandCab.
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="DemandCabRepository")
*/
class DemandCab
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var DecisionCab
*
* @ORM\OneToMany(targetEntity="\My\CabBundle\Entity\DecisionCab", mappedBy="demandCab")
*/
private $decisionsCab;
/**
* @var \DateTime
*
* @ORM\Column(name="startDate", type="datetime")
*/
private $startDate;
/**
* @var \DateTime
*
* @ORM\Column(name="endDate", type="datetime", nullable=true)
*/
private $endDate;
/**
* @var int
*
* @ORM\Column(name="followup", type="integer", nullable=true)
*/
private $followup;
/**
* @var InfoCab
*
* @ORM\ManyToOne(targetEntity="\My\CabBundle\Entity\InfoCab", inversedBy="demandsCab")
*/
private $infoCab;
}
/**
* DecisionCab.
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="DecisionCabRepository")
*/
class DecisionCab
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var DemandCab
*
* @ORM\ManyToOne(targetEntity="\My\CabBundle\Entity\DemandCab", inversedBy="decisionsCab")
*/
private $demandCab;
/**
* @var bool
*
* @ORM\Column(name="decision", type="boolean", nullable=true)
*/
private $decision;
/**
* @var string
*
* @ORM\Column(name="motif", type="string", length=500, nullable=true)
*/
private $motif;
/**
* @var string
*
* @ORM\Column(name="role", type="string", length=255)
*/
private $role;
/**
* @var \DateTime
*
* @ORM\Column(name="date", type="datetime", nullable=true)
*/
private $date;
/**
* @var DemandCab
*
* @ORM\ManyToOne(targetEntity="\My\CabBundle\Entity\DemandCab", inversedBy="decisionsCab")
*/
private $demandCab;
/**
* @var User
*
* @ORM\ManyToOne(targetEntity="\My\CabBundle\Entity\User", inversedBy="decisionsCab")
*/
private $user;
}
在我的 DemandCabRepository 中
public function findAllCompleted(){
$qb = $this->createQueryBuilder("dem");
$qb->select('dem, dec');
$qb->leftJoin("dem.decisionsCab", "dec");
$qb->andWhere("dem.completed = 1");
$qb->orderBy("dem.startDate", "DESC");
return $qb->getQuery()->getResult();
}
我的 DemandCab 数据
我的 DecisionCab 数据
... 而当我使用getArrayResult 时,我有 4 个决定...
查询很好,但我不明白为什么水合会在 0 或 1 处删除具有属性 decision 的 DecisionCab 对象(仅显示 null)。
我想了解为什么以及是否有解决方案来获取包含所有 DecisionCab 子对象的 DemandCab 对象。
谢谢
【问题讨论】:
-
您使用的是哪个学说版本?
-
我使用的是 Doctrine 2.6 版
-
您还可以为您的实体添加所有字段吗?其中之一可能是水合不当的原因。
标签: php symfony doctrine hydration