2012-03-11 64 views
3

我需要一些帮助,因为我似乎无法理解这个概念。yii和非数据库模型

在框架中,即Yii,我们创建了与database tables相对应的模型。我们从CActiveRecord扩展它们。但是,如果我想创建一个从其他模型获取一些数据的类,但是会根据这些结果执行所有计算并对它们执行某些操作...那么我该如何继续?

我想明确划分责任,所以我不想把所有的计算放在源数据库为基础的模型。基本上这个想法是,它会从某些模型中取出一些东西,然后用计算结果更新另一个模型。

我该怎么办?

  • 保留一些控制器中的所有计算并使用所需的模型? (对此犹豫不决,因为有一个规则,以保持控制器苗条)
  • 创建一个无数据库模型,然后从那里工作(如何?)?
  • 做别的事(什么?)?

感谢您的帮助!

回答

3

对于您使用Model的Yii 解释,您将不得不创建类,这取决于CModel。这是一个抽象类,因此您将需要实施attributeNames()方法。

要在这个新结构中使用其他“模型”,您需要在构造函数中注入它们,或者在创建自定义模型之后注入它们。


真正的MVC模型是一个层,它主要包含两组具有特定职责的类:域业务逻辑和数据访问操作。负责域业务逻辑的对象不知道信息的存储位置和来源。或者即使有“数据库”之类的东西。

这段视频或许可以解释了一下:https://vimeo.com/21173483

+0

大视频资源!将检查出来。谢谢! – RandomWhiteTrash 2012-03-11 22:25:24

+0

@RandomWhiteTrash,你可以[在这里下载幻灯片](http://qafoo.com/talks/11_11_osidays_advanced_oo_patters.pdf)。 – 2012-03-11 22:45:14