【发布时间】:2025-12-02 03:50:02
【问题描述】:
我正在尝试在我的 symfony 应用程序 3.3.5 中使用实体上的集合 当我创建一个新对象并在其中添加集合时,我的配置工作正常。 但是当我试图从数据库中获取现有集合时,它始终为空。 我的实体看起来像这样
class HydraulicTest
{
...
/**
* @var \Me\MyBundle\Entity\HydraulicTestResult
*
* @ORM\OneToMany(targetEntity="Me\MyBundle\Entity\HydraulicTestResult", mappedBy="idHydraulicTest")
*/
private $hydraulicTestResults;
public function __construct()
{
$this->hydraulicTestResults = new ArrayCollection();
}
...
/**
* Get hydraulicTestResults
*
* @return \Me\MyBundle\Entity\HydraulicTestResult
*/
public function getHydraulicTestResults()
{
return $this->hydraulicTestResults;
}
}
class HydraulicTestResult
{...
/**
* @var \Me\MyBundle\Entity\HydraulicTest
*
* @ORM\ManyToOne(targetEntity="Me\MyBundle\Entity\HydraulicTest", inversedBy="hydraulicTestResults")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="id_hydraulic_test", referencedColumnName="id")
* })
*/
private $idHydraulicTest;
...
/**
* Set idHydraulicTest
*
* @param \Me\MyBundle\Entity\HydraulicTest $idHydraulicTest
*
* @return HydraulicTestResult
*/
public function setIdHydraulicTest(\Me\MyBundle\Entity\HydraulicTest $idHydraulicTest = null)
{
$this->idHydraulicTest = $idHydraulicTest;
return $this;
}
/**
* Get idHydraulicTest
*
* @return \Me\MyBundle\Entity\HydraulicTest
*/
public function getIdHydraulicTest()
{
return $this->idHydraulicTest;
}
}
这就是我现在在控制器中所做的事情
$HydraulicTest = new HydraulicTest();
$HydraulicTest->setTester('This is a test');
$hydraulicTestResult= new HydraulicTestResult();
$hydraulicTestResult->setFluidTemperature(12);
$HydraulicTest->getHydraulicTestResults()->add($hydraulicTestResult);
$hydraulicTestResult2= new HydraulicTestResult();
$hydraulicTestResult2->setFluidTemperature(44);
$HydraulicTest->getHydraulicTestResults()->add($hydraulicTestResult2);
这很好用,当我显示我的实体时将数组集合返回给我
HydraulicTest {#1654 ▼
-comment: "test"
-validationComment: null
-model: null
-tester: "This is a test"
-hydraulicTestResults: ArrayCollection {#2651 ▼
-elements: array:2 [▼
0 => HydraulicTestResult {#2652 ▼
-temperature: 12
}
1 => HydraulicTestResult {#2653 ▼
-temperature: 44
}
]
}
}
调用无效
$EntityHydraulicTest = $this->getDoctrine()->getRepository(HydraulicTest::class)->findOneById($id);
$EntityHydraulicTest->getHydraulicTestResults();
即使数据库中的 HydraulicTestResult 中有元素链接到 HydraulicTest 实体,ArrayCollection 也总是返回 null
HydraulicTest {#2688 ▼
-comment: "test"
-validationComment: null
-model: null
-tester: null
-id: 8
-hydraulicTestResults: null
}
【问题讨论】:
标签: php symfony doctrine-orm