2013-04-02 89 views
1

我有三個實體(Profile,ProfileValueValue)。
A ProfileProfileValue有一對多的關係,它與Value實體有多對一的關係。學說2:一對多關係,按外鍵排序

是否有可能從value id訂購的ProfileValuesProfile

如果我爲ProfileValue中的啓用字段等非外鍵添加orderby註釋,它將起作用。但是對於一個外鍵,它失敗了,並顯示消息"inrecognized field"。有任何想法嗎?

/** 
* 
* @ORM\Table(name="profile") 
* @ORM\Entity 
*/ 
class Profile { 

    /** 
    * @var integer $id 
    * 
    * @ORM\Column(name="id", type="integer", nullable=false, options={"unsigned"=true}) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="IDENTITY") 
    */ 
    private $id; 

    /** 
    * @var array $profileCValues 
    * @ORM\OneToMany(targetEntity="ABC\XYZBundle\Entity\ProfileValue", mappedBy="profile", cascade={"persist"}) 
    * @ORM\OrderBy({"value" = "ASC"}) 
    */ 
    private $profileValues; 

這裏是ProfileValue實體:

/** 
* ABC\XYZBundle\Entity\ProfileValue 
* 
* @ORM\Table(name="profile_value", indexes={@ORM\Index(columns={"profile_id"}), @ORM\Index(columns={"value_id"}) }) 
* @ORM\Entity 
*/ 
class ProfileValue { 
    /** 
    * @var integer $id 
    * 
    * @ORM\Column(name="id", type="integer", nullable=false, options={"unsigned"=true}) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="IDENTITY") 
    */ 
    private $id; 

    /** 
    * @var integer $enabled 
    * 
    * @ORM\Column(name="enabled", type="boolean", length=1, nullable=true) 
    */ 
    private $enabled; 

    /** 
    * @var ABC\XYZBundle\Entity\Profile 
    * @ORM\ManyToOne(targetEntity="ABC\XYZBundle\Entity\Profile", inversedBy="profileValues") 
    * @ORM\JoinColumn(name="profile_id", referencedColumnName="id", nullable=true, onDelete="CASCADE") 
    */ 
    private $profile; 

    /** 
    * @var ABC\XYZBundle\Entity\Value 
    * @ORM\ManyToOne(targetEntity="ABC\XYZBundle\Entity\Value") 
    * @ORM\JoinColumn(name="value_id", referencedColumnName="id", onDelete="CASCADE") 
    */ 
    private $value; 
} 
+0

你有沒有想到硫s出來了嗎?我也希望做到這一點 – Chausser

回答

2

工作的呢?

/** 
* @var array $profileCValues 
* @ORM\OneToMany(targetEntity="ABC\XYZBundle\Entity\ProfileValue", mappedBy="profile", cascade={"persist"}) 
* @ORM\OrderBy({"id" = "ASC"}) 
*/ 
private $profileValues; 

我不使用XML,但是這部作品在陽明:

oneToMany: 
    foos: 
    targetEntity:    Company\ProjectBundle\Entity\Foo 
    mappedBy:     bar 
    orderBy:     { 'id': ASC } 
3

有同樣的問題,並通過添加一個新的領域與國外重點解決了這個問題:

/** 
* @var integer $valueId 
* 
* @ORM\Column(name="value_id", type="integer") 
*/ 
private $valueId; 

然後你可以訂購它沒有問題:

/** 
* @var array $profileCValues 
* @ORM\OneToMany(targetEntity="ABC\XYZBundle\Entity\ProfileValue", mappedBy="profile", cascade={"persist"}) 
* @ORM\OrderBy({"valueId" = "ASC"}) 
*/ 
private $profileValues;