1

我正在使用带有 CakePHP 应用程序的非常内在的数据库,到目前为止,我的多模型视图和控制器工作正常。我有一个单数表(Entity),它id在其他几个表上作为外键entity_id

有些表是一对一的关系(比如 aCompany是一个Entity),有些表是一对多的(Entity可以有几个Addresses)等等。

我不会/不能更改数据库模型,所以这就是结构。

我一直在使用saveAll()以下输入名称在这些表上保存数据:

Entity.type='x' (hidden inside the view)
Company.name
Address.0.street
Address.0.city
Address.1.street
Address.1.city

... and so on ...

而我的拯救就是做所有艰苦的工作BEGIN TRANSACTION,所有INSERT的和最后的COMMIT......

但是现在我创建了EntityCategory一个对 n 的关系,并在HABTM模型内创建了完整的关系。

当我使用它时它起作用save(),但只是HABTM关系,当我使用时它会保存一切saveAll()(就像以前一样),除了HABTM关系。

我错过了什么吗?我如何使它正常工作?我今天使用以下代码:

if (!empty($this->data)) {
  $this->Entity->saveAll($this->data);
  $this->Entity->save($this->data);
}

saveAll()所有数据保存在几个表中,保存 idEntity->idsave()保存HABTM关系,但我不确定它是否正确,或者如果我更改某些结构/模型是否会给我带来问题。

这是最好的使用方法吗?有没有一种正确的方法可以在 CakePHP 中保存这种关系?您的经验/知识可以告诉我什么?

4

2 回答 2

1

如果您下载每晚的.

不过要小心,其他东西可能会损坏。

于 2008-11-18T09:19:10.223 回答
0

saveAll() 和 HABTM 关联的问题是一个已知的 CakePHP问题,并且在 1.2 RC2 中还没有解决。

根据 CakePHP食谱,保存相关模型数据的最佳实践是:

“在使用关联模型时,重要的是要意识到保存模型数据应始终由相应的 CakePHP 模型完成。如果您要保存新帖子及其关联的评论,那么您将在保存期间同时使用帖子和评论模型手术。”

但是,使用 saveAll() 和 save() 应该可以工作,恕我直言,这是一个更灵活/通用的解决方案。

于 2008-09-29T07:14:00.677 回答