php yii orm,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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值