gpt4 book ai didi

php - Doctrine 2类表继承YML

转载 作者:可可西里 更新时间:2023-11-01 01:02:52 26 4
gpt4 key购买 nike

我正在尝试在 ZF2 和 Doctrine 2 中使用类表继承。我的实现非常简单。我想我已经设置好了类结构,但我认为某处的某些设置可能存在问题。不幸的是,我找到了很多关于类设置的文档,但关于 YML 实现的文档并不多。每个人似乎都诉诸于使用学说工具来生成一切。根据设置方式,使用条令工具有点问题,尤其是在使用 ZF2 时。另外,我认为这是一个学习机会。所以,这就是我所拥有的:

当前问题:我没有从子类/表中获取任何数据:

.array(1) {
[0] =>
class MyCompany\Domain\Model\Customer\CustomerNote#2852 (9) {
protected $customer =>
NULL
protected $note =>
string(13) "Clever Note 1"
protected $id =>
string(1) "1"
protected $disabled =>
NULL
protected $modified =>
class DateTime#2884 (3) {

...

通用笔记类/表:

CREATE TABLE generic_notes
(
note_id serial NOT NULL,
discriminator character varying(255) NOT NULL,
note text,
created timestamp with time zone NOT NULL DEFAULT now(),
created_by_id bigint NOT NULL,
modified timestamp with time zone,
modified_by_id bigint,
disabled timestamp with time zone NOT NULL DEFAULT 'infinity'::timestamp with time zone,
CONSTRAINT generic_notes_pkey PRIMARY KEY (note_id),
CONSTRAINT generic_notes_created_by_id_fkey FOREIGN KEY (created_by_id)
REFERENCES users (user_id) MATCH SIMPLE
ON UPDATE CASCADE
ON DELETE RESTRICT,
CONSTRAINT generic_notes_modified_by_id_fkey FOREIGN KEY (modified_by_id)
REFERENCES users (user_id) MATCH SIMPLE
ON UPDATE CASCADE
ON DELETE RESTRICT
)

客户备注类/表(继承通用备注):

CREATE TABLE customer_notes
(
note_id bigint NOT NULL,
customer_id bigint NOT NULL,
CONSTRAINT customer_notes_pkey PRIMARY KEY (note_id),
CONSTRAINT customer_notes_note_id_fkey FOREIGN KEY (note_id)
REFERENCES generic_notes (note_id) MATCH SIMPLE
ON UPDATE RESTRICT
ON DELETE RESTRICT,
CONSTRAINT customer_notes_customer_id_fkey FOREIGN KEY (customer_id)
REFERENCES customers (customer_id) MATCH SIMPLE
ON UPDATE R1ESTRICT
ON DELETE RESTRICT
)

注释的 YML 映射:

MyCompany\Domain\Model\Note:
type: entity
table: generic_notes
inheritanceType: JOINED
discriminatorColumn:
name: discriminator
type: string
length: 255
discriminatorMap:
customer: MyCompany\Domain\Model\Customer\CustomerNote
id:
id:
column: note_id
type: bigint
generator:
strategy: IDENTITY
fields:
note:
type: text
nullable: true
created:
type: datetimetz
modified:
type: datetimetz
nullable: true
disabled:
type: datetimetz
nullable: true
manyToOne:
createdBy:
targetEntity: MyCompany\Domain\Model\User
joinColumn:
name: created_by_id
referencedColumnName: user_id
modifiedBy:
targetEntity: MyCompany\Domain\Model\User
joinColumn:
name: modified_by_id
referencedColumnName: user_id

客户备注映射:

MyCompany\Domain\Model\Customer\CustomerNote:
type: entity
table: customer_notes
manyToOne:
customer:
targetEntity: MyCompany\Domain\Model\Customer
inversedBy: customerNote
joinColumn:
name: customer_id
referencedColumnName: customer_id

通用笔记实体

<?php

namespace MyCompany\Domain\Model;

use MyCompany\Domain\Model\Entity\AbstractEntity;
use MyCompany\Domain\Model\Entity\DisabledTrait;
use MyCompany\Domain\Model\Entity\TimestampedInterface;
use MyCompany\Domain\Model\Entity\TimestampedTrait;

/**
* Class Note
*
* @package MyCompany\Domain\Model
*/

class Note extends AbstractEntity implements TimestampedInterface
{
use DisabledTrait;
use TimestampedTrait;

/**
* @var string
*/
protected $note;

/**
* @param string $note
* @return $this
*/
public function setNote($note)
{
$this->note = $note;
return $this;
}

/**
* @return string
*/
public function getNote()
{
return $this->note;
}
}

客户备注实体:

<?php

namespace MyCompany\Domain\Model\Customer;

use MyCompany\Domain\Model\Note;
use MyCompany\Domain\Model\Customer;

/**
* Class CustomerNote
* @package MyCompany\Domain\Model\Customer
*/
class CustomerNote extends Note
{
/**
* @var \MyCompany\Domain\Model\Customer
*/
protected $customer;

/**
* @param \MyCompany\Domain\Model\Customer $customer
* @return $this
*/
public function setCustomer(Customer $customer)
{
$this->customer = $customer;
return $this;
}

/**
* @return \MyCompany\Domain\Model\Customer
*/
public function getCustomer()
{
return $this->customer;
}
}

通用笔记夹具数据:

generic_notes:
-
note_id: 1
discriminator: customer
note: Clever Note 1
created: "2012-01-23 05:43:21.000000"
created_by_id: 1
modified: "2012-01-24 05:43:21.000000"
modified_by_id: 2
disabled: null

客户备注夹具数据:

customer_notes:
-
note_id: 1
customer_id: 1

最佳答案

上面的一切都是完全有效的。看来我没有为客户注释单元测试包括我的注释夹具数据,反之亦然。所以,因为我自己的愚蠢而陷入困境。

关于php - Doctrine 2类表继承YML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18699509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com