1

我有两个类,A 和 B,每个类都映射我数据库中的一个表。A 和 B 在第二个表中的主键列和另一列之间具有关系。我想在一个函数中插入/更新两个表,但我不确定最好的方法是什么。

我在 Google 上找到了一些解决方案,但我不确定这是最好的方法。我应该怎么办?我的想法是有一个方法save(),它调用 A 和 B 的保存方法。如果这是最好的选择,我应该扩展什么,CFormModel 或 CActiveRecord?如果我尝试通过遵循文档扩展 CFormModel,那么拥有诸如save()orinsert()或之类的方法是不正确的update()。文档说 CFormModel 仅用于存储不会保存的数据。如果我扩展 CActiveRecord,我将可以访问 save() 方法,但我不会映射任何内容。文档说 CActiveRecord 必须映射数据库中的表。

那么,最好的方法是什么?

4

2 回答 2

1

If you have the default folder structure for yii generated from the gii generation tool, in you components folder you may use the controller file and add your save method there and access any CActiveRecords you'd like. Then, you can call your save method from within any controller you'd like.

于 2013-01-02T17:19:16.160 回答
0

我认为这是最好的答案。更好地控制数据流总是更好的。

@DCoder 我认为在大规模应用程序中这将是至关重要的。如果您将使用 aftersave() 或覆盖 save() 并忘记工作流程,那么您将遇到很多问题。您可以在数据库中找到行,但您可能不知道它们来自哪里,因为您本能地调用了 save()。另一种方法更好,有一个调用 save() 的自定义函数。但是你必须知道这个自定义方法是存在的。

于 2013-01-03T11:48:58.623 回答