对于使用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

php yii orm,Yii中的sql查询的位置(或任何支持ORM的框架)?相关推荐

  1. 视图函数中进行sql查询,防止sql注入

    视图函数中进行sql查询 import pymysql # 创建连接 use_unicode=true指定字符的编码.解码格式,进行自动编码解码,mysql数据库的编码格式为gbk,而项目数据库为ut ...

  2. 计算机目录读取,从项目目录中读取SQL查询文件(Read SQL query file from project directory)...

    从项目目录中读取SQL查询文件(Read SQL query file from project directory) 我在Visual Studio项目中放置了3个特别大的SQL查询,位于项目目录中 ...

  3. oracle report builder 6i下载,oracle report builder 6i - 数据模型中的SQL查询代码

    我是Vijetha,我正在研究报告6i,我很陌生 . 我有以下查询 . 在front_end中,在Reports Parameter中,当用户单击"运行"按钮时,它将询问START ...

  4. foreach输出mysql方法_mysql – “foreach”循环:使用R中的所有核心(特别是如果我们在foreach循环中发送sql查询)...

    我打算用"foreach"来uitlize我的CPU中的所有核心.我需要在循环中发送一个sql查询.该脚本在正常的'for'循环中工作正常,但是当我将其更改为'foreach'时它 ...

  5. oracle判断字段为空时选用别的字段_oracle中使用sql查询时字段为空则赋值默认

    转至:http://www.th7.cn/db/Oracle/201501/86125.shtml oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值 oracle 函数介绍之nvl ...

  6. 64位环境中使用SQL查询excel的方式解决

    --64位环境中使用SQL查询excel的方式 环境: OS:Windows Server 2008 R2 Enterprise MSSQL:Microsoft SQL Server 2008 R2 ...

  7. Access中使用sql查询

    在ACCESS中使用SQL查询语句检查SQL语法时非常有用. 操作步骤如下: [创建]->[查询设计] 直接关闭弹出的[显示表] 找到[SQL视图]: 在查询命令窗口输入命令,然后执行运行命令. ...

  8. sql 时间范围查询_Excel中使用SQL查询,单元格范围最多支持65536行?

    1.先建立一个excel,本人的版本为2016 2.然后向下填充数字,操作为填充--序列 这样生成1-66666的序列 3.使用SQL查询语句,进行查询 使用语句 : select 序列 from [ ...

  9. 在VS Code中执行SQL查询,是怎样一种体验?

    上次,我们演示了"如何使用Nuget包XPlot.Plotly.Interactive在.NET Interactive notebook中绘制图表". 这次,我们使用Nuget包 ...

最新文章

  1. 又一年5.20,用Python助力程序员脱单大攻略(视频版)
  2. IROS 2021 | 具有挑战性的Hilti SLAM数据集
  3. 用python画简单房子-python绘图作业:使用pygame库画房子
  4. 用python编写的无线AP扫描器
  5. linux qt 5移植,Qt 5.13支持处理Lottie文件,可以方便地进行移植
  6. 广州的11个辖区_广州“受欢迎”的2个区,相距仅20公里,若“合并”将超黄埔区...
  7. NYOJ 711 最舒适的路线(并查集)
  8. dotConnect for Oracle控件免费下载及使用方法
  9. 微擎乐慧云智慧农场源码V1.0.1
  10. MongoDB (六) MongoDB 集合操作
  11. C语言 strftime 格式化显示日期时间 时间戳
  12. Android:Android SDK的下载与安装
  13. POJ 4047 Garden 线段树 区间更新
  14. 使用linux提交pbs任务:运行matlab或perl程序
  15. 子网划分,掩码转换计算
  16. 使用PhotoShop制作蓝底证件照
  17. 用python暴力破解压缩包密码
  18. 想做价值数万的可视化图表?这款免费软件不能错过!
  19. 在资源管理器中隐藏指定分区
  20. 亳州市发明专利申请费用多少钱,权利要求书要怎么写?

热门文章

  1. Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
  2. Constant expression required
  3. 计算机软件属于输入还是输出,计算机基本输入输出系统是什么意思(基本输入输出系统简介)...
  4. (int),Int32.Parse() 和 Convert.toInt32() 的区别
  5. ORB_SLAM2 PnPSolver
  6. geohash java github_GitHub - GongDexing/Geohash: GeoHash是目前比较主流实现位置服务的技术,用最简洁的Java实现GeoHash算法...
  7. python速成要多久2019-8-28_2019最全Python入门学习路线,不是我吹,绝对是最全
  8. android数据库降级_Android SQLite (二.数据库创建,升级及降级)
  9. android约束布局中 链,Android-ConstraintLayout(约束布局)-Chains链(链条布局,Nice)
  10. java map collection_java 集合----Map、Collection