別の質問。ユーザーとの関連付けを維持する抽象的なBaseLogエンティティがあります。さらに、BaseLogを拡張する2つのエンティティ(FooLogとBarLog)があります。さらに、ログへの2つの関連付けを保持することになっているユーザーエンティティがあります。1つはFooLog用、もう1つは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;
}
FooLog
/** @ORM\Entity */
class FooLog extends BaseLog {
// Some additional fields
}
BarLog
/** @ORM\Entity */
class BarLog extends BaseLog {
// Some additional fields
}
ユーザー
/** @ORM\Entity */
class User {
/**
* @ORM\OneToMany(targetEntity="FooLog", mappedBy="user", cascade={"persist"})
*/
private $fooLogs;
/**
* @ORM\OneToMany(targetEntity="BarLog", mappedBy="user", cascade={"persist"})
*/
private $barLogs;
}
FooLog&BarLogでBaseLogのinversedByを上書きするにはどうすればよいですか。
この設定でいくつかのマッピングエラーが発生します:BaseLog
- BaseLog:関連付けBaseLog#userは、存在しない逆サイドフィールドUser#logsを参照します。
- FooLog:関連付けFooLog#userは、存在しない逆サイドフィールドUser#logsを参照します。
- BarLog:関連付けBarLog#userは、存在しない逆サイドフィールドUser#logsを参照します。
- ユーザー:マッピングUser#fooLogsとFooLog#userは互いに矛盾しています。
- ユーザー:マッピングUser#barLogsとBarLog#userは互いに矛盾しています。
マッピングを並べ替えるのを手伝ってください。