7

2つのフィールド(両方ともManyToOneフィールド)を持つUniqueEntityを作成しようとしています。

コードは次のとおりです。

/*
* @ORM\Table()
* @ORM\Entity
* @ORM\HasLifecycleCallbacks()
* @UniqueEntity(fields={"user", "connect"})
*/
class UserConnect
{
    /**
     * @var integer $id
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var boolean $isLeader
     *
     * @ORM\Column(name="isLeader", type="boolean")
     */
    private $isLeader;

    /**
     * @var date $joinedDate
     *
     * @ORM\Column(name="joinedDate", type="date")
     */
    private $joinedDate;

    /**
     * @ORM\ManyToOne(targetEntity="User", inversedBy="userConnects")
     * 
     */
    private $user;

    /**
     * @ORM\ManyToOne(targetEntity="Connect", inversedBy="userConnects")
     * 
     */
     private $connect;

目標は、USERとCONNECTをリンクするエンティティが1つだけであることを確認することです。

@UniqueEntity宣言に何か他のものを書くべきですか?

4

3 に答える 3

6

これは機能します:

/**
 * State
 *
 * @ORM\Table(
 *  name="general.states",
 *  uniqueConstraints={
 *      @ORM\UniqueConstraint(name="states_country_name_code_key", columns={"idcountry", "name","code"}),
 *  })
 * @ORM\Entity(repositoryClass="Fluency\Bundle\GeneralBundle\Entity\Repository\StateRepository")
 */
class State
{.......

私のシステム上のエンティティから取得しました。この方法は、データベース スキーマに影響します。私がどこに置いたか見てください@\ORM\UniqueConstraint annotation。申し訳ありません@estopero ...次回は他の回答を最初に読まなければなりません。

于 2013-11-08T12:52:19.237 に答える
-2

属性の注釈にも一意の宣言を追加する必要があります。

 /**
 * @ORM\ManyToOne(targetEntity="User", inversedBy="userConnects")
 * @ORM\Column(unique=true)
 */
private $user;

/**
 * @ORM\ManyToOne(targetEntity="Connect", inversedBy="userConnects")
 * @ORM\Column(unique=true)
 */
 private $connect;

このsymfony docとこの StackOverflow answerを参照してください。

于 2012-11-08T15:37:24.333 に答える