Symfony 2,学说 2.1。
我有 3 个实体,其中一个是中间实体(连接表)。假设它是 SomeObject、SomeProperty 和 ObjectProperties。
问题:我无法获取 SomeProperty 'name' 属性的值。这是代码:
[...]
class SomeObject
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
*
* @var ObjectProperties $objectProperties
*
* @ORM\OneToMany(targetEntity="ObjectProperties", mappedBy="object_id", cascade={"all"})
*/
private $objectProperties;
[...]
[...]
class SomeProperty
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
* @ORM\OneToMany(targetEntity="ObjectProperties", mappedBy="property_id", cascade={"all"})
*/
private $id;
/**
* @var string $name
*
*/
private $name;//I NEED TO GET VALUE OF $name
[...]
[...]
class ObjectProperties
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="SomeObject", inversedBy="id", cascade={"all"})
* @ORM\JoinColumn(name="object_id", referencedColumnName="id")
*/
private $object_id;
/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="SomeProperty", inversedBy="id", cascade={"all"})
* @ORM\JoinColumn(name="property_id", referencedColumnName="id")
*/
private $property_id;
[...]
像往常一样设置和获取。
在我的控制器中,我有以下内容:
$entity = $em->getRepository('SomeTestBundle:SomeObject')->find($id);
[...]
$props = $entity->getObjectProperties();
foreach ($props as $prop){
echo '---------------------------<br>';
var_dump($prop->getPropertyId()->getName());
}
现在, getName() 给了我空结果,但如果我用 getId 替换它,它会按预期工作。如果我尝试在表单类中使用它也是一样的。是因为 SomeProperty->name 和 ObjectProperties 之间没有教义关联吗?
我想我不太明白教义应该如何运作。我认为在联结表中只需要 property_id 和 object_id ,否则对我来说没有多大意义,因为 SomeProperty 用作字典表,所以我可以在一个地方更改 SomeProperty->name。
我严重坚持下去。是缺少某种配置选项还是我通常没有得到更大的图景?