1

私が理解できるように書かれたドキュメントが見つからなかったので、助けを求めています。この質問はUnique entity - Symfony2に関連しています

idfos_user_idnameの3 つのフィールドを持つcategoryというテーブルがあります。もう 1 つのテーブルはfos_userと呼ばれ、id、ユーザー名などのフィールドがあります。

カテゴリをユーザーごとに一意にしたい。1 人のユーザーが "Food" という名前のカテゴリを 2 つ持つことはできませんが、すべてのユーザーが "Food" というカテゴリを持つことができます。

他の質問では、次のようなことを試すようにアドバイスされました。

* @ORM\Table(name="categories",
*            uniqueConstraints={@ORM\UniqueConstraint(name="name_user_id__idx", 
*                                                     columns={"name", "user_id"})})

そして私はこれを試しました:

/**
 * @ORM\Entity
 * 
 * @ORM\Table(name="category", 
 *              uniqueConstraints={@ORM\UniqueConstraint(name="name_user_idx",                                                     
                                           columns={"name", "fos_user_id"})}))
 * @ORM\Entity(repositoryClass="Acme\BudgetTrackerBundle\Entity\CategoryRepository")
 * @UniqueEntity(fields={"name", "fos_user_id"}, message="There already is such a category.")
 */

しかし、私はこのエラーが発生します:

フィールド「fos_user_id」はDoctrineによってマッピングされていないため、一意性を検証できません。

エラーがよくわかりません。そして、制約のある部分がわかりません。これは正しい構文であり、正しい記述ですか?

事前にどうもありがとうございました!

PS:新しい質問を開いて申し訳ありませんが、新しい質問をたくさん追加したので、古い質問を編集してコメントで質問するよりも新しい質問の方が良いと判断しました。

4

1 に答える 1

5

カテゴリ、ユーザーなどの関係については、列ではなく関係に対して一意の制約を使用する必要があります。例えば:

それ以外の

@UniqueEntity(fields={"name", "fos_user_id"})

試す

@UniqueEntity(fields={"name", "user"})

ここで、「user」は、User エンティティとの関係にマップされたフィールドの名前です。

于 2013-04-24T15:10:49.703 に答える