1

orm:schema-tool:create を実行すると、このエラーが発生します。Doctrinem を使用するのは初めてなので、いくつか疑問があります。エラーの原因は、Comment オブジェクトの 3 つの配列を持つクラス Player を持っていることだと思います。私のdbスキームの考えは次のとおりです。

player_comment(id_player,id_comment)
commentsliked(id_player,id_comment)
commentsdisliked(id_player,id_comment)

コメントは双方向の関係ですが、commentsLiked と commentsDisliked はそうではないことに注意してください。

私が理解している限り、Doctrine は前の 3 つのテーブルに「player_comment」という名前を付けたいと考えています。

前もって感謝します。

私のクラス Player は次のようになります。

/**
 * @Entity @Table(name="players") 
 */
class Player
{
/** 
 * @Id @Column(type="integer") @GeneratedValue 
 * @var int
**/
private $id;

/** 
     * @OneToMany(targetEntity="Comment", mappedBy="writer")
 * @var Comment[]
    **/
private $comments = null;
/**
 * @ManyToMany(targetEntity="Comment")
     * @Table(name="commentsliked")
 * @var Comment[]
**/
private $commentsLiked = null;
/**
 * @ManyToMany(targetEntity="Comment")
     * @Table(name="commentsdisliked")
 * @var Comment[]
**/
private $commentDisliked = null;
}

私のクラスのコメントは次のようになります。

/**
 * @Entity @Table(name="comments")
 */
class Comment {
/** 
 * @Id @Column(type="integer") @GeneratedValue 
 * @var int
**/
private $id;

/** 
     * @ManyToOne(targetEntity="Player", inversedBy="comments") 
 * @var Player
    **/
private $writer;
}
4

3 に答える 3

0

http://docs.doctrine-project.org/en/latest/reference/association-mapping.html#many-to-many-unidirectionalに示されているように @JoinTable を使用しました。

私は、commentsLiked と commentsDisliked の注釈を更新しました:

/**
 * @ManyToMany(targetEntity="Comment")
 * @JoinTable(name="commentsliked",
 * joinColumns={@JoinColumn(name="player_id", referencedColumnName="id")},
 * inverseJoinColumns={@JoinColumn(name="commment_id",referencedColumnName="id")})
 * @var Coments[]
**/
private $commentsLiked = null;
/**
 * @ManyToMany(targetEntity="Comment")
 * @JoinTable(name="commentsDisliked",
 * joinColumns={@JoinColumn(name="player_id", referencedColumnName="id")},
 * inverseJoinColumns={@JoinColumn(name="comment_id",referencedColumnName="id")})     )
 * @var Comment[]
**/
private $commentsDisliked = null;
于 2012-07-06T18:35:00.663 に答える
0

これに対する優れた解決策の 1 つは、ManyToMany関連付けに「更新可能なビュー」を用意し、マトリックス エンティティに実際のテーブルを使用することです。このようにして、両方のアプローチからメリットが得られます。

于 2014-09-03T10:13:25.503 に答える