Yii中的sql查询的位置(或任何支持ORM的框架)?
对于使用MVC体系结构的项目,这是更多的编码风格问题。
我正在使用Yii框架开展一个项目。 每个数据库表都有它自己的模型类,可以让我充分利用Yii的活动记录。 凉。
但是现在我需要用一个复杂的逻辑和大量的表进行SQL查询。 最好和最快捷的方法是编写一个原始SQL,并将其放入一些getSomeComplexLogicData
方法中。
问题是,我在哪里放这个方法? 将它放在一个我称之为控制器的地方是很好的做法(它不太可能会在其他地方重新使用),还是应该将它放在最适合的某个Model类中?
Yii的“模型”不需要扩展CActiveRecord
。
您可以创建一个简单的域对象,该对象包含代码中某些结构的业务逻辑,并为该结构提供单独的映射器,其中包含复杂的SQL查询。
你应该尽量避免在一个班级中集中所有,因为你最终会违反SRP,这是活动记录模式通常被认为是有害的主要原因之一(当然有一些例外)。 它倾向于将机器人域逻辑和存储逻辑整合到一个类中,因此很难进行测试和维护。
如果您使用的是正确的MVC或MVC设计模式,则不会有“模型”。 模型应该是一个层。 不是课堂或对象。 你不应该有任何域控制器业务逻辑暴露。
1)您可以将此方法放入组件/ Controller.php中,以便将此方法用于您的每个应用程序控制器。
2)最好的方法是制作一个你自己的组件。 你可以从控制器,模型,视图中调用你的组件。
Yii::app()->yourcomponentname->methodname
学习如何制作组件的链接:http://www.yiiframework.com/wiki/187/how-to-write-a-simple-application-component/
链接地址: http://www.djcxy.com/p/60843.html上一篇: Where to put sql queries in Yii (or any framework with ORM support)?