1

次の問題があります。2 つのテーブルとの関係を作成する必要がありますが、通常の ID がないため、文字列列を使用する必要があります。このようなもの:

/**
 * @ORM\Entity
 * @ORM\Table(name="sigtap_tb_procedimento")
 */
class Procedimento
{
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @ORM\OneToMany(targetEntity="ExcecaoCompatibilidade", mappedBy="procedimento_restricao")
     * @ORM\JoinColumn(name="co_procedimento_restricao", referencedColumnName="co_procedimento")
     */
    private $restricoes;

}

そして別のエンティティ

    /**
 * @ORM\Entity
 * @ORM\Table(name="sigtap_rl_excecao_compatibilidade") 
 */
class ExcecaoCompatibilidade
{
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @ORM\ManyToOne(targetEntity="Procedimento", inversedBy="restricoes")
     * @ORM\JoinColumn(name="co_procedimento_restricao", referencedColumnName="co_procedimento")
     */
    private $procedimento_restricao;
}

co_procedimento_restricao と co_procedimento_restricao は文字列型です. 関係がうまくいきません. この問題を解決するにはどうすればよいですか?

4

2 に答える 2

0

リレーションは、他のテーブルの主キーを参照する必要があります。私はあなたの質問を誤解しているかもしれませんが、次のような関係の id 列を参照することはできません:

/**
 * @ORM\OneToMany(targetEntity="ExcecaoCompatibilidade", mappedBy="procedimento_restricao")
 */
private $restricoes;

/**
     * @ORM\ManyToOne(targetEntity="Procedimento", inversedBy="restricoes")
     * @ORM\JoinColumn(name="co_procedimento_restricao", referencedColumnName="id")
     */
    private $procedimento_restricao;

ここを見てください: http://docs.doctrine-project.org/en/2.0.x/reference/association-mapping.html

于 2013-06-26T14:40:45.197 に答える
0

教義との一対多の関係を使用する

使用する側@OneToManyは常に教義の pov からのリレーションの逆側であり (逆側であると考えられるものではない可能性があります)、結合列の定義はありません。

@JoinColumnから注釈を削除しclass Procedimentoます。

@OneToManyMappedByを使用する必要があり、@ManyToOne(所有側) はinversedByを使用します。

結合列 (または結合テーブル) の定義は、所有側にある必要があり@ManyToOneます。

結合列を使用する場合、この列の名前 (所有側エンティティのテーブルに追加されます) によって指定されname="column_name"、そこに格納する参照された外部キーがreferencedColumnName="id"定義されます。@JoinColum注釈。


于 2013-06-26T15:39:29.827 に答える