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
php yii orm,Yii中的sql查询的位置(或任何支持ORM的框架)?相关推荐
- 视图函数中进行sql查询,防止sql注入
视图函数中进行sql查询 import pymysql # 创建连接 use_unicode=true指定字符的编码.解码格式,进行自动编码解码,mysql数据库的编码格式为gbk,而项目数据库为ut ...
- 计算机目录读取,从项目目录中读取SQL查询文件(Read SQL query file from project directory)...
从项目目录中读取SQL查询文件(Read SQL query file from project directory) 我在Visual Studio项目中放置了3个特别大的SQL查询,位于项目目录中 ...
- oracle report builder 6i下载,oracle report builder 6i - 数据模型中的SQL查询代码
我是Vijetha,我正在研究报告6i,我很陌生 . 我有以下查询 . 在front_end中,在Reports Parameter中,当用户单击"运行"按钮时,它将询问START ...
- foreach输出mysql方法_mysql – “foreach”循环:使用R中的所有核心(特别是如果我们在foreach循环中发送sql查询)...
我打算用"foreach"来uitlize我的CPU中的所有核心.我需要在循环中发送一个sql查询.该脚本在正常的'for'循环中工作正常,但是当我将其更改为'foreach'时它 ...
- oracle判断字段为空时选用别的字段_oracle中使用sql查询时字段为空则赋值默认
转至:http://www.th7.cn/db/Oracle/201501/86125.shtml oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值 oracle 函数介绍之nvl ...
- 64位环境中使用SQL查询excel的方式解决
--64位环境中使用SQL查询excel的方式 环境: OS:Windows Server 2008 R2 Enterprise MSSQL:Microsoft SQL Server 2008 R2 ...
- Access中使用sql查询
在ACCESS中使用SQL查询语句检查SQL语法时非常有用. 操作步骤如下: [创建]->[查询设计] 直接关闭弹出的[显示表] 找到[SQL视图]: 在查询命令窗口输入命令,然后执行运行命令. ...
- sql 时间范围查询_Excel中使用SQL查询,单元格范围最多支持65536行?
1.先建立一个excel,本人的版本为2016 2.然后向下填充数字,操作为填充--序列 这样生成1-66666的序列 3.使用SQL查询语句,进行查询 使用语句 : select 序列 from [ ...
- 在VS Code中执行SQL查询,是怎样一种体验?
上次,我们演示了"如何使用Nuget包XPlot.Plotly.Interactive在.NET Interactive notebook中绘制图表". 这次,我们使用Nuget包 ...
最新文章
- 又一年5.20,用Python助力程序员脱单大攻略(视频版)
- IROS 2021 | 具有挑战性的Hilti SLAM数据集
- 用python画简单房子-python绘图作业:使用pygame库画房子
- 用python编写的无线AP扫描器
- linux qt 5移植,Qt 5.13支持处理Lottie文件,可以方便地进行移植
- 广州的11个辖区_广州“受欢迎”的2个区,相距仅20公里,若“合并”将超黄埔区...
- NYOJ 711 最舒适的路线(并查集)
- dotConnect for Oracle控件免费下载及使用方法
- 微擎乐慧云智慧农场源码V1.0.1
- MongoDB (六) MongoDB 集合操作
- C语言 strftime 格式化显示日期时间 时间戳
- Android:Android SDK的下载与安装
- POJ 4047 Garden 线段树 区间更新
- 使用linux提交pbs任务:运行matlab或perl程序
- 子网划分,掩码转换计算
- 使用PhotoShop制作蓝底证件照
- 用python暴力破解压缩包密码
- 想做价值数万的可视化图表?这款免费软件不能错过!
- 在资源管理器中隐藏指定分区
- 亳州市发明专利申请费用多少钱,权利要求书要怎么写?
热门文章
- Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
- Constant expression required
- 计算机软件属于输入还是输出,计算机基本输入输出系统是什么意思(基本输入输出系统简介)...
- (int),Int32.Parse() 和 Convert.toInt32() 的区别
- ORB_SLAM2 PnPSolver
- geohash java github_GitHub - GongDexing/Geohash: GeoHash是目前比较主流实现位置服务的技术,用最简洁的Java实现GeoHash算法...
- python速成要多久2019-8-28_2019最全Python入门学习路线,不是我吹,绝对是最全
- android数据库降级_Android SQLite (二.数据库创建,升级及降级)
- android约束布局中 链,Android-ConstraintLayout(约束布局)-Chains链(链条布局,Nice)
- java map collection_java 集合----Map、Collection