gpt4 book ai didi

symfony1 - Symfony Doctrine 模式分割错误

转载 作者:行者123 更新时间:2023-12-04 06:57:46 24 4
gpt4 key购买 nike

我正在设置我的第一个 symfony 项目,但在模式方面遇到了问题。我不确定我是否以正确的方式去做。

我的两个类(class)有问题。我有客户,可以有很多联系人,需要选择其中一个联系人作为发票联系人。这是我的架构:

NativeClient:
actAs: { Timestampable: ~ }
columns:
name: { type: string(255), notnull: true }
address: { type: string(255) }
postcode: { type: string(9) }
tel: { type: string(50) }
fax: { type: string(50) }
website: { type: string(255) }
client_status_id: { type: integer, notnull: true, default: 0 }
priority: { type: boolean, notnull: true, default: 0 }
invoice_contact_id: { type: integer }
invoice_method_id: { type: integer }
relations:
NativeContact: { local: invoice_contact_id, foreign: id, foreignAlias: NativeInvoiceContacts }
NativeClientStatus: { local: client_status_id, foreign: id, foreignAlias: NativeContacts }
NativeInvoiceMethod: { local: invoice_method_id, foreign: id, foreignAlias: NativeClientStatuses }


NativeContact:
actAs: { Timestampable: ~ }
columns:
client_id: { type: integer, notnull: true }
name: { type: string(255), notnull: true }
position: { type: string(255) }
tel: { type: string(50), notnull: true }
mobile: { type: string(50) }
email: { type: string(255) }
relations:
NativeClient: { onDelete: CASCADE, local: client_id, foreign: id, foreignAlias: NativeClients }

NativeClientStatus:
actAs: { Timestampable: ~ }
columns:
name: { type: string(255), notnull: true }

NativeInvoiceMethod:
actAs: { Timestampable: ~ }
columns:
name: { type: string(255), notnull: true }

如果我删除以下行(和相关的装置),它就可以工作,否则我会遇到段错误。
NativeContact:       { local: invoice_contact_id, foreign: id, foreignAlias: NativeInvoiceContacts }

它会陷入循环吗?试图一遍又一遍地引用客户和联系人?任何帮助将不胜感激!谢谢!

达伦

最佳答案

达伦,您似乎在使用相互冲突的标准时定义了两端的关系......

NativeContact:       { local: invoice_contact_id, foreign: id, foreignAlias: NativeInvoiceContacts }

...关系是“invoice_contact_id”和 NativeContact 中未声明的“id”PK 之间的关系。
 NativeClient:       { onDelete: CASCADE, local: client_id, foreign: id, foreignAlias: NativeClients } 

...相同的关系是在 NativeClient 中的“client_id”和未声明的“id”PK 之间。

我个人只在一端定义这些,让 Doctrine 处理其余部分,但这取决于您在这里尝试实现的目标。如果一个客户端有多个联系人,您可以删除第二个声明并仅在客户端表中定义关系,并添加“type: many, foreignType: one”以声明它是一对多的关系。

关于symfony1 - Symfony Doctrine 模式分割错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2341141/

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