gpt4 book ai didi

php - Doctrine setter 在多对多关系上有什么用?

转载 作者:搜寻专家 更新时间:2023-10-31 21:44:45 25 4
gpt4 key购买 nike

今天我遇到了一些关于 Doctrine (1.2) 的意外行为。

情况

我有一个Document 类和一个Anomaly 类。一个 Document 可以有很多 Anomalies,一个 Anomaly 可以在很多 Documents 上找到。

#schema.yml

Document:
columns:
id: { type: integer(12), primary: true, autoincrement: true }
scan_id: { type: integer(10), notnull: true }
name: { type: string(100), notnull: true }

Anomaly:
columns:
id: { type: integer(5), primary: true, autoincrement: true }
label: { type: string(200) }
value: { type: integer(6), notnull: true, unique: true }
relations:
Documents:
class: Document
refClass: DocumentAnomaly
local: anomaly_id
foreign: document_id
foreignAlias: Anomalies

DocumentAnomaly:
columns:
document_id: { type: integer(12), primary: true }
anomaly_id: { type: integer(5), primary: true }
relations:
Anomaly: { local: anomaly_id, foreign: id }
Document: { local: document_id, foreign: id }

问题

我想实例化一个新的 Document,为其属性分配一些值,并为其分配一个 Anomaly 列表。

#sample code

$anomalies = Doctrine_Core::getTable('Anomaly')->getSomeAnomalies(); //returns a valid and non empty Doctrine_Collection of Anomalies

$document = new Document();
$document->setName('test')
->setScanId(3574)
->setAnomalies($anomalies)
->save();

echo $document->getId(); // "1"
print_r($document->getDocumentAnomaly()->toArray(); // empty array
print_r($document->getAnomalies()->toArray(); //correct array, listing anomalies from "->getSomeAnomalies()"

后果:Document 保留在数据库中,但不是指向其Anomalies 的链接(DocumentAnomaly表/对象)。

解决方法

$anomalies = Doctrine_Core::getTable('Anomaly')->getSomeAnomalies();

$document = new Document();
$document->setName('test')
->setScanId(3574)
->setAnomalies($anomalies)
->save();

foreach ($anomalies as $anomaly)
{
$documentAnomaly = new DocumentAnomaly();
$documentAnomaly->setDocument($document)
->setAnomaly($anomaly);
$documentAnomaly->save();
}

//Document is persisted, *and it's DocumentAnomalies too*.

我的问题

$document->setAnomalies() 方法有什么用?有没有 ?我错过了什么吗?

谢谢。

最佳答案

$Document->Anomalies->add($Anomaly);

关于php - Doctrine setter 在多对多关系上有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5678647/

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