我有三个实体(Profile
,ProfileValue
和Value
)
Profile
与ProfileValue
具有一对多关系,与Value
实体具有多对一关系。
是否可以从ProfileValues
按Profile
订购value id
来获取orderby
?
如果我为ProfileValue
中的启用字段添加非外键的"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;
}
实体:
{{1}}
答案 0 :(得分: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;
答案 1 :(得分:2)
这有用吗?
/**
* @var array $profileCValues
* @ORM\OneToMany(targetEntity="ABC\XYZBundle\Entity\ProfileValue", mappedBy="profile", cascade={"persist"})
* @ORM\OrderBy({"id" = "ASC"})
*/
private $profileValues;
我不使用XML,但这适用于YML:
oneToMany:
foos:
targetEntity: Company\ProjectBundle\Entity\Foo
mappedBy: bar
orderBy: { 'id': ASC }