0

Tagテーブルには、Category多対1としてテーブルとの関係があります(多くのタグが1つのカテゴリに関連付けられているか、1つのカテゴリに多くのタグがあります)。

Tagテーブルからテーブルへの通常の多対1の関係を取得する必要がありますCategoryCategoryこれは、テーブル(名前付き)のIDに基づいている必要がありますid_category。しかし、代わりに私は...VARCHAR(255)テーブルの列を取得していますTag

タグエンティティのコードの一部は次のとおりです。

/**
 * @ORM\Column(nullable=true)
 * @ORM\ManyToOne(targetEntity="Category")
 * @ORM\JoinColumn(name="id_category", referencedColumnName="id_category")
 */
protected $category;

カテゴリエンティティには、一方向の関係であるため、適切な関連する「タグ」列がありません。とにかく、これがエンティティでどのようid_categoryに宣言されているかですCategory(私はそれが重要だとは思いませんが):

/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id_category;

Doctrine2のコマンドで得られる結果update --dump-sqlは次のとおりです。

ALTER TABLE Tag ADD category VARCHAR(255) DEFAULT NULL

Doctrineは、外部キーを持つidとしてVARCHARではなく、私に与えます。INTEGER誰かが理由を知っていますか?この場合、Symfonyに関係を作るように指示
するには どうすればよいですか?

4

1 に答える 1

0

@ORM \ Columnを使用せず、@ ORM\ManyToOneだけを使用してください。

/**
 * @ORM\ManyToOne(targetEntity="Category")
 * @ORM\JoinColumn(name="id_category", referencedColumnName="id_category", nullable=true)
 */
protected $category;
于 2012-09-04T15:57:15.323 に答える