dj_*_*ssi 7 mapping orm symfony doctrine-orm
另一个问题.我有一个抽象的BaseLog实体,它保持与我的用户的关联.此外,我有2个实体(FooLog和BarLog),它们扩展了BaseLog.另外我有我的用户实体,假设有两个与Log的关联.一个用于FooLog,一个用于BarLog.这是我的问题.我收到错误消息,因为我不知道如何在扩展实体时覆盖BaseLog的inversedBy字段.请你帮助我好吗.
因为我认为我的解释不是很好,这里是我的实体的设置.
BaseLog
/** @ORM\MappedSuperclass */
abstract class BaseLog {
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="logs")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=true, onDelete="SET NULL")
* })
*/
private $user;
}
Run Code Online (Sandbox Code Playgroud)
FooLog
/** @ORM\Entity */
class FooLog extends BaseLog {
// Some additional fields
}
Run Code Online (Sandbox Code Playgroud)
BarLog
/** @ORM\Entity */
class BarLog extends BaseLog {
// Some additional fields
}
Run Code Online (Sandbox Code Playgroud)
用户
/** @ORM\Entity */
class User {
/**
* @ORM\OneToMany(targetEntity="FooLog", mappedBy="user", cascade={"persist"})
*/
private $fooLogs;
/**
* @ORM\OneToMany(targetEntity="BarLog", mappedBy="user", cascade={"persist"})
*/
private $barLogs;
}
Run Code Online (Sandbox Code Playgroud)
我如何有覆盖BaseLog的inversedBy在FooLog&BarLog.
我在这个设置上得到了几个Mapping错误:BaseLog
请帮我把我的映射排序.
小智 4
我对单一继承也有类似的问题。我通过在两个实体类(父类和继承类)中定义相同的关联但名称不同来解决这个问题。对于您的情况,您可以尝试以下操作:
/** @ORM\Entity */
class FooLog extends BaseLog {
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="foologs")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=true, onDelete="SET NULL")
* })
*/
private $user;
}
Run Code Online (Sandbox Code Playgroud)
在 BarLog 类中:
/** @ORM\Entity */
class BarLog extends BaseLog {
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="barlogs")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=true, onDelete="SET NULL")
* })
*/
private $bar_user;
}
Run Code Online (Sandbox Code Playgroud)
注意不同的名称($bar_user)。您还必须在用户实体中定义foologs 和barlogs 属性。这消除了学说验证错误。
| 归档时间: |
|
| 查看次数: |
5465 次 |
| 最近记录: |