1
dvaknheo OP 大表先查
User::where("status", 0)->get(); ,为什么这样, 因为 后面还要用到 Model 类的 User->getUserImage() { /* 用到 $this->uid; */ } 方法。 |
2
mokeyjay 2019-11-06 21:40:04 +08:00
没看懂你想表达什么
不过 laravel 确实在一些情况下会使用 whereIn,比如关联模型预加载时 |
3
dvaknheo OP 我整理一下, 高级用户表,根据一些数据,要追加 基础用户表的 用户名,头像。 高级用户表和基础用户表是 user_id 一对一,这很简单吧。
我要显示我深圳地区的 VIP 会员的状态和头像,只要在线的。 从 VIP 会员表(小表 Vip )里查出地址:深圳,然后 连表查询 基础 用户表(大表,UserModel), 状态为在线。 一个 left join user_id 完事。 为什么会先从大表查, 然后小表里 whereIn (user_id) 呢。 原因是获取头像这个操作,是写在 UserModel 类的方法是要根据 $this->user_id 做一堆操作的(包括连其他表!);不接受外部 user_id. 用户名,也是从 UserModel->username 得的。 老程序员的想法,先是,怎么写 sql,然后改成 where() 模式, 然后再想怎么转成 model . 而那些 L 记没学过 sql 的,和 Hibernate 之类 ORM 的。根本就不考虑 sql 性能。反正一把梭就是。 产生了类似 count( Model->where()->get()); 之类的性能悲剧 |
4
zibber 2019-11-06 22:50:40 +08:00
orm 你关联顺序反了
|
6
lihongming 2019-11-06 23:35:00 +08:00 via iPhone
本着尽量不写 sql 的原则,我会优先考虑$this->hasOne(‘RelatedModel’)
|
7
jhdxr 2019-11-06 23:38:27 +08:00 5
尽管你补充了一大堆,还是没看懂你想表达什么。也许你的代码水平能比你的语文水平好一些(所以不如直接贴代码吧
然后例如 count( Model->where()->get()); 这种悲剧,难道不是开发者自己菜吗? Model->where()->count() 难道没有这样的方法吗? 然后 whereIn 正确的用法的确是会转成 subquery 的啊? 文档( https://laravel.com/docs/5.8/queries#where-exists-clauses )里有个 whereExists 的用法,举一反三应该不难? |
8
jhdxr 2019-11-06 23:45:27 +08:00
不知不觉 laravel 都出到 6.x 了么。。。我对它的印象好像还停留在 5.3 还是 5.1 来着 orz
|
9
akira 2019-11-07 00:52:31 +08:00
自己的小项目会用 orm,但是正式要上线的东西 还是习惯直接写 sql。
|
11
weirdo 2019-11-07 10:06:52 +08:00
楼主想说什么完全没明白,建议楼主直接上代码。
还有标题,“开发者跟不上作者的智商” 这句话里,开发者指谁,作者又指谁。 开发者指框架开发者,作者指产品作者说得通, 开发者指产品开发者,作者指框架作者也说得通。 |
12
allen9009 2019-11-07 10:18:45 +08:00
我掐指一算,你即将被一顿喷
|
13
dvaknheo OP @jhdxr VipModel::WhereIn ( function ($query)) 方式走不通,是 因为要得到的是 UserModel 之后要得到的 UserModel 里做一些额外操作
each UserModel->getAvator(); 没有 UserModel->getAvatorByid($id); 这个方法。 |
14
jhdxr 2019-11-09 23:29:51 +08:00
当然不应该有 UserModel->getAvatorByid($id); 这种方法,但是你可以根据 id 找到对应的 UserModel,然后去拿对应的 avatar。
例如 UserModel::find($id)->getAvatar(); 恩没错纠正你一下,如果你这儿想打的是头像,那拼写应该是 avatar,最后不是 or。 另外如果 VipModel 和 UserModel 是有关联的,那你完全可以直接从 VipModel 拿到 UserModel ( https://laravel.com/docs/5.8/eloquent-relationships#one-to-one-polymorphic-relations ) 看你的发帖历史居然还是框架作者???想喷一个框架前把它的文档先读一遍好吗???另外这个楼里就没人能看懂你在说什么的,语文水平太差不是你的错,程序员之间沟通,你还是直接上代码比较省事。 |