Doctrine 2.4をORMとしてSymfony 2.3でアプリケーションを開発しています。私が使用するデータベース エンジンはPostgreSQLです。エンティティを他のテーブルの複合主キーにマッピングするときに問題が発生します。これらのキーは、関連キーの外部キーです。
私のデータベースのテーブルには次の構造があります
CREATE TABLE public.establecimiento
(
id_establecimiento integer NOT NULL,
establecimiento character varying(100) NOT NULL,
CONSTRAINT pk_establecimiento PRIMARY KEY (id_establecimiento )
)
WITH (
OIDS=FALSE
);
CREATE TABLE public.establecimiento_sec
(
id_establecimiento_sec integer NOT NULL,
id_establecimiento integer NOT NULL,
det_seccion character varying(40) NOT NULL,
plano character varying(100),
sector_ingreso character varying(254),
sponsor_imagen_sec character varying(96000),
CONSTRAINT pk_establecimientos_sec PRIMARY KEY (id_establecimiento_sec , id_establecimiento ),
CONSTRAINT fk_establec_reference_establec FOREIGN KEY (id_establecimiento)
REFERENCES public.establecimiento (id_establecimiento) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT
)
WITH (
OIDS=TRUE
);
CREATE TABLE public.establecimiento_sec_plano
(
id_establecimiento_sec_plano integer NOT NULL,
id_establecimiento_sec integer NOT NULL,
id_establecimiento integer NOT NULL,
det_plano character varying(512),
cantidad integer NOT NULL,
precio double precision,
insert_charge double precision DEFAULT 0,
descr character varying(254),
CONSTRAINT pk_establecimiento_sec_plano PRIMARY KEY (id_establecimiento_sec_plano , id_establecimiento_sec , id_establecimiento ),
CONSTRAINT fk_establecimiento_sec FOREIGN KEY (id_establecimiento, id_establecimiento_sec)
REFERENCES public.establecimiento_sec (id_establecimiento, id_establecimiento_sec) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE CASCADE
)
WITH (
OIDS=FALSE
);
エンティティ establecimientoSecPlano の定義、キー $establecimiento および $id_establecimiento_sec を含む $establecimientoSec 変数
//エンティティ/EstablecimientosSecPlano
/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Ticketway\PruebaBundle\Entity\EstablecimientosSec")
* @ORM\JoinColumns(
* @ORM\JoinColumn(name="id_establecimiento_sec", referencedColumnName="id_establecimiento_sec"),
* @ORM\JoinColumn(name="id_establecimiento", referencedColumnName="id_establecimiento"))
*/
private $establecimientoSec;
//エンティティ/EstablecimientosSec
/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Ticketway\PruebaBundle\Entity\Establecimientos")
* @ORM\JoinColumn(name="id_establecimiento", referencedColumnName="id_establecimiento")
*/
private $establecimiento;
コマンド doctrine: mapping: import を実行すると、次のエラーが表示されます
[Doctrine\ORM\Mapping\MappingException] エンティティ「EstablecimientoSec」を別のエンティティ「EstablecimientoSecPlano#idEstablecimiento」の主キーの一部として複合主キーにマップすることはできません。
symfony でエンティティを定義する方法はあるのだろうかと思いますが、doctrine ではできません。
アプリケーションが正しく動作するように、別の方法で機能をマッピングできますか?
私の質問が理解されることを願っています。ありがとう