CaseCollectionsCaseMapでSingleCaseを作成する際に問題があります。Symfony manyToOne on flushエラー
これは私のDB構造である:
CREATE TABLE cases (
ca_id serial NOT NULL,
ca_parent_id INTEGER,
ca_urlcode VARCHAR(255) NOT NULL,
ca_defaultcollection_id INTEGER,
ca_active SMALLINT NOT NULL DEFAULT 1,
ca_author_id INTEGER,
ca_author_name VARCHAR(255) NOT NULL,
ca_modified timestamp without time zone NOT NULL DEFAULT now(),
ca_created timestamp without time zone NOT NULL DEFAULT now(),
CONSTRAINT cases_pk PRIMARY KEY (ca_id),
CONSTRAINT cases_ca_parent_id FOREIGN KEY (ca_parent_id)
REFERENCES cases (ca_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE SET NULL
)
WITH (
OIDS=FALSE
);
CREATE TABLE case_collections (
cc_id serial NOT NULL,
cc_parent_id INTEGER,
cc_urlcode VARCHAR(255) NOT NULL,
cc_active smallint NOT NULL DEFAULT 1,
cc_priority INTEGER DEFAULT 0 NOT NULL,
cc_author_id INTEGER,
cc_author_name VARCHAR(255) NOT NULL,
cc_modified timestamp without time zone NOT NULL DEFAULT now(),
cc_created timestamp without time zone NOT NULL DEFAULT now(),
CONSTRAINT case_collections_pk PRIMARY KEY (cc_id),
CONSTRAINT case_collections_cc_parent_id FOREIGN KEY (cc_parent_id)
REFERENCES case_collections (cc_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE SET NULL
)
WITH (
OIDS=FALSE
);
CREATE TABLE case_collections_cases (
cc_id INTEGER NOT NULL,
ca_id INTEGER NOT NULL,
ccca_priority INTEGER NOT NULL,
CONSTRAINT case_collections_cases_pk PRIMARY KEY (cc_id, ca_id),
CONSTRAINT case_collections_cases_cc_id_fk FOREIGN KEY (cc_id)
REFERENCES case_collections (cc_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE CASCADE,
CONSTRAINT case_collections_cases_ca_id_fk FOREIGN KEY (ca_id)
REFERENCES cases (ca_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE CASCADE
)
WITH (
OIDS=FALSE
);
これは私の教義ORMファイル:私のCommandHandlerで
PPK\Domain\Entity\SingleCase\SingleCase:
type: entity
repositoryClass: PPK\Infrastructure\Repository\SingleCase\DoctrineSingleCaseRepository
table: cases
id:
caId:
type: integer
column: ca_id
generator:
strategy: SEQUENCE
sequence-generator:
allocationSize: 1
initialValue: 1
sequenceName: cases_case_id_seq
fields:
caUrlcode:
type: string
length: 255
column: ca_urlcode
caActive:
type: smallint
column: ca_active
caAuthorId:
type: integer
column: ca_author_id
caAuthorName:
type: string
column: ca_author_name
caModified:
type: datetime
column: ca_modified
caCreated:
type: datetime
column: ca_created
manyToOne:
defaultCollection:
targetEntity: PPK\Domain\Entity\SingleCase\CaseCollectionsCaseMap
joinColumns:
ca_defaultcollection_id:
referencedColumnName: cc_id
ca_id:
referencedColumnName: ca_id
PPK\Domain\Entity\SingleCase\CaseCollectionsCaseMap:
type: entity
repositoryClass: PPK\Infrastructure\Repository\SingleCase\DoctrineCaseCollectionsCaseMapMapRepository
table: case_collections_cases
id:
collection:
type: integer
column: cc_id
associationKey: true
singleCase:
type: integer
column: ca_id
associationKey: true
fields:
cccaPriority:
type: integer
column: ccca_priority
manyToOne:
singleCase:
targetEntity: PPK\Domain\Entity\SingleCase\SingleCase
joinColumns:
ca_id:
referencedColumnName: ca_id
orphanRemoval: false
collection:
targetEntity: PPK\Domain\Entity\CaseCollection\CaseCollection
joinColumns:
cc_id:
referencedColumnName: cc_id
orphanRemoval: false
PPK\Domain\Entity\CaseCollection\CaseCollection:
type: entity
repositoryClass: PPK\Infrastructure\Repository\CaseCollection\DoctrineCaseCollectionRepository
table: case_collections
id:
ccId:
type: integer
column: cc_id
generator: { strategy: AUTO }
fields:
ccUrlcode:
type: string
length: 255
column: cc_urlcode
ccActive:
type: smallint
column: cc_active
ccPriority:
type: integer
column: cc_priority
ccAuthorId:
type: integer
column: cc_author_id
ccAuthorName:
type: string
column: cc_author_name
ccModified:
type: datetime
column: cc_modified
ccCreated:
type: datetime
column: cc_created
私はCaseCollectionsCaseレポでSingleCaseレポ注入してきました。
私だけSingleCase作成:
$singleCase = new SingleCase();
$singleCase->setCaActive($singleCaseDTO->getStatus());
$singleCase->setCaUrlcode($singleCaseDTO->getUrl());
$singleCase->setCaAuthorId($user->getUsrId());
$singleCase->setCaAuthorName($user->getUsrName());
$singleCase->setCaCreated();
$singleCase->setCaModified();
$this->singleCaseRepository->create($singleCase);
Doctrineはエラーをスロー:CaseCollectionsCaseMapを追加
SQLSTATE[23502]: Not null violation: 7 ERROR: null value in column "ca_id" violates not-null constraint
DETAIL: Failing row contains (null, null, /new-question, null, 0, 1, XX, 2017-12-03 13:22:18, 2017-12-03 13:22:18).
はまだ助けない:
$defaultCollection = new CaseCollectionsCaseMap();
$defaultCollection->setCollection($cc);
$defaultCollection->setCccaPriority(0);
$singleCase->setDefaultCollection($defaultCollection);
$this->singleCaseRepository->create($singleCase);
Doctrineはスロー:
をそして、私はカスケード追加:defaultCollectionの教義に[ "持続"、 "マージ"]はスロー:
An exception occurred while executing 'INSERT INTO cases (ca_id, ca_urlcode, ca_active, ca_author_id, ca_author_name, ca_modified, ca_created, ca_parent_id, ca_defaultcollection_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)' with params [null, "\/new-question", 0, 1, "XX", "2017-12-03 13:26:26", "2017-12-03 13:26:26", null, null]
通話を$ CAIDを生成し持続しますが、フラッシュするには、それをゼロにしています。
ご協力いただきますようお願い申し上げます。
私はPostgreSQL 9.6を使用しています。 ジェネレータをAUTOに変更しても効果はありません。 – msmolik
申し訳ありませんが間違いをしました。 'IDENTITY'を使う必要があります。今すぐ私の答えを更新します – avpav
まだ効果はありません。 – msmolik