PHP 的 sql 到底该写在哪儿?

2020-04-13 18:17:18 +08:00
 taaaang

最近刚接触 PHP,过了一遍 PHP 官方文档和 thinphp 的官方文档就开干。然后用到原生 sql,不知道正常情况应该写在哪儿更合适,controller ? 还是单独整一层? 或者一起放在 model 里面? 求大佬们指点下,怎么搞看起来专业一点。。。

8044 次点击
所在节点    PHP
66 条回复
dobelee
2020-04-14 13:10:18 +08:00
只是临时简单用到的话不用特意抽一层,简单写到 html 里...哦不 controller 里就 ok 了。🐶
airflybusoren
2020-04-14 13:14:16 +08:00
一直写 model 那,跟 java 不一样
m939594960
2020-04-14 13:30:34 +08:00
@MonoLogueChi #39 哪 dao 什么意思?是什么的简写?有什么含义?我以后管 model 叫 Eloquent 管 view 叫 blade 管 route 叫 fasterouter 可以么?
shenjia
2020-04-14 13:35:52 +08:00
只用过 Yii 框架的 ActiveRecord,一开始感觉链式调用还挺爽的……后来发现还是用 sprintf 手拼 sql 最实在,性能可控,线上有慢查询了好定位,一搜一个准。
iyaozhen
2020-04-14 13:40:41 +08:00
其实你会 java 的话按 java 一模一样来就行
james122333
2020-04-14 13:44:56 +08:00
@dobelee
这不如直接写一个脚本就好...
"超文本预处理器"...
yogogo
2020-04-14 13:50:44 +08:00
我是再加了一层 logic 层,就是类似 service
hantsy
2020-04-14 13:52:10 +08:00
你们写 php 不用 Doctrine 吗?
james122333
2020-04-14 13:55:49 +08:00
@shenjia
手拼外加封装"一个"类 会更爽
那些写设定的不知道在想什么
设定再动态也不会比语言动态
只要不要写成$xxx->select()->from()类似的就可以了
hantsy
2020-04-14 14:07:40 +08:00
@shenjia ActiveRecord 模式最成功是 CakePHP,还进行很多封装,简单易用。
lzj307077687
2020-04-14 14:26:51 +08:00
一般开一层 Repository 或者 Service
要快的话直接 Controller
predator
2020-04-14 15:29:07 +08:00
不是说 DAO 专不专于什么的问题,也不是说 PHP 要怎么写显得“专业”一些的问题
ThinkPHP 或者类似的框架,本来就有文档去规范要把可重用的数据库操作写在 model 里面

有些人接手公司的项目,连框架规范都不愿意看,model 里面套 service,service 里面再套 dao,自己觉得在 IDE 里面爽得不行,完全大傻逼

dao 你妈逼 dao
HUALIAN
2020-04-14 16:07:23 +08:00
dao 哈哈 笑死我了🐎的
Heartbleed
2020-04-14 16:11:04 +08:00
常用的 SQL 写在 model 好一点,逻辑清晰
G4vin
2020-04-14 16:37:29 +08:00
要不是学过两个月的 java 我真没听过 dao 是什么鬼。。。。
james122333
2020-04-14 16:52:24 +08:00
@Heartbleed
是阿 是"常用" model 不一定必须
yoshiyuki
2020-04-14 17:01:14 +08:00
model 层
lepig
2020-04-14 17:09:47 +08:00
能不能别整天在那 dao 比 dao

![c9sA.png]( https://u.vmpic.cn/2020/04/14/c9sA.png)
Heartbleed
2020-04-14 17:38:31 +08:00
“dao 你妈逼” 的那位笑死我了 hhhh
dvaknheo
2020-04-14 18:13:16 +08:00
Service/Logic 跟业务走。
Model/Repository 跟表走 如果是附属表也可以不那么严格。

比如用户充值,需要修改余额和生成充值记录,那么直接用$user->recharge($money)我觉得是比较方便和复用的,那么对我来说就是适合的,

按业务来分的话
UserService::Recharge($user_id,$money)
这个走 RechargeModel 还可能要用到 LogModel 还看看用户是否有钱 UserInfoModel
UserService::GetProfile($user_id)
用 UserInfoModel

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/662056

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX