0

別のエンティティとの OneToOne 関係を含むエンティティがあります。

/**
 * @ORM\Entity
 * @ORM\Table(name="tb_promocao")
 */
class Promocao {
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $codigo;

       /**
     * @ORM\OneToOne(targetEntity="Application\Model\Produto\Produto")
     * @ORM\JoinColumn(name="cod_produto", referencedColumnName="codigo")
     */
    private $produto;
}

/**
 * @ORM\Entity
 * @ORM\Table(name="tb_produto")
 */
class Produto {

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

        (...)

}

問題は、Promocao でフェッチ エンティティを指定しようとすると、プロパティ $produto に Produto エンティティが正しく入力されないことです。

Produto エンティティが、関係を受け取るプロパティに正しくマッピングされていません。

オブジェクト: EntityProxy__CG__\Application\Model\Produto\Produto

4

1 に答える 1

1

これは正常な動作です。結合されたモデルは遅延ロードであるため、呼び出していない間はプロキシしかありません。

結合されたモデルの読み込みのタイプを変更して、EAGER モードに設定できます。

@ORM\OneToOne(targetEntity="Application\Model\Produto\Produto")
@ORM\JoinColumn(name="cod_produto", referencedColumnName="codigo", **fetch='EAGER'**)

ただし、この結合されたデータが毎回必要な場合を除いて、ここではあまりお勧めしません。

Doctrine のドキュメントを確認してください。これについては多くの精度があります。

お役に立てれば。

于 2012-12-23T13:12:57.327 に答える