Symfony 2、Doctrine 2.1Doctrine 2、左の結合結果セットでプロパティを取得する方法は?
私は3つのエンティティを持っています。それらのうちの1つは中間(結合テーブル)です。 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()は私にNULLという結果が得られますが、私はのgetIdに置き換える場合に予想されるとして、それは動作します:私のコントローラで
は、私はの線に沿って何かを持っています。私がフォームクラスでそれを使用しようとすると同じです。それはSomeProperty-> nameとObjectPropertiesの間に教義の関連がないからですか?
ドクトリンが働くことになっているとは思えません。 Some_Propertyは辞書テーブルの役割を果たすので、junctionテーブルにはproperty_idとobject_idだけが必要だと思っていました。そうでなければ、SomeProperty-> nameを変更することができました。
私はそれに真剣に取り組んでいます。それは欠けているか、私は一般的に大きな画像を取得していない設定オプションのいくつかの並べ替えですか?
ObjectPropertiesでは、なぜプロパティ名の後に '_id'を追加しましたか? $ objectと$ propertyの名前を付ける必要があります。さらに、JoinColumnsアノテーションは役に立たない。 – greg0ire
さて、@Columnアノテーションを使って動作させ、6時間で回答を投稿します。 – heliogabal
Aaaaargh、私はあなたが複雑すぎると思う。あなたはこの '_id'サフィックス – greg0ire