qiujin 最近的时间轴更新
qiujin

qiujin

V2EX 第 205220 号会员,加入于 2016-12-09 18:31:28 +08:00
qiujin 最近回复了
2018-09-03 14:22:15 +08:00
回复了 EDDYCJY 创建的主题 问与答 PHP 有做 RPC Server,且支持 Protobuf 的吗?
写过简单的 PHP Grpc Server,如果不涉及到数据流等在 fpm 环境下不适合实现的功能外,用 PHP 实现一个简单的 Grpc Server 还是可以的。
https://github.com/qiu-jin/phpegg/blob/master/framework/core/app/Grpc.php
2017-10-23 18:27:55 +08:00
回复了 LiuXuFei 创建的主题 PHP 有什么合适的包能接收 json-rpc 的异步推送吗?
问题重点是 websocket,首先需要个 websocket client 吧。

用 PHP 写过 jsonrpc 的应用服务,使用通知回调方法也可以实现类似需求,http://www.phpegg.com/doc/app-jsonrpc.html
2017-10-18 20:14:02 +08:00
回复了 Bazingawang 创建的主题 Coding Coding 动态 Pages 内测邀请:一键运行你的 PHP 程序
qiujin
申请试试
@tanszhe 嗯,是用预处理处理的参数,只是 LOG 打印 SQL 时采用拼接的方式,这样看起来更直观。
2017-10-15 19:25:36 +08:00
回复了 gouchaoer 创建的主题 PHP 恨 laravel 的老外
恨谈不上,就是觉得有点不合适,所以我自己开了个坑 http://www.phpegg.com
2017-10-13 16:42:01 +08:00
回复了 herozw 创建的主题 PHP 商城订单超过 30 分钟未支付自动取消订单,最佳解决方案是怎样?
使用 beanstalkd 这种有延迟任务功能的队列
文档已经整理放到新的站点 http://www.phpegg.com
@vindurriel with 语句是逻辑联表查询,一次查询的确需要执行 1+1 次 SQL,它类似于 ActiveRecord 型的 ORM 中的 hasMany 设定,相对 ORM 优点是不用生成大量对象也不用写 model 模型代码定义每个表和表之间关系。

写一个简单的例子,像 v2 这样的社区有多个主题贴子,每一个主题也有多个回复评论,如果我一次想要查询自己所有的主题贴子和所有的主题贴子的回复评论回复怎么办?

用常规写法,先查询所有的主题贴,再循环查询每个主题贴的回复评论

$posts = $this->db->post->where('name', 'qiujin')->find();
foreach ($posts as $i => $post) {
$posts[$i] = $this->db->comment->where('post_id', $post['id'])->find();
}
return $posts;

使用 with 语句一行代码即可。

return $this->db->post->where('name', 'qiujin')->with('comment')->find();

对比就可以知道常规写法不仅啰嗦,而且低效,因为常规写法执行了 1+N 次 SQL。

而 with 语句简洁明了,查询 post 数据后,在把 post 数据中的 id 抽出组成 where in 查询 comment 表数据,最后把 comment 数据组合分配给 post 返回,其中只执行了 1+1 次 SQL,比常规写法效率高很多。
去搜了下 Zend DB 子查询的实现 https://stackoverflow.com/questions/1340564/writing-a-subquery-using-zend-db
得分最高的回答的演示代码的其中一行。
->where('sles.id = (SELECT MAX(id) FROM sle_instances WHERE sle_id = sles.id)')
我去这算什么,这个直接写 SQL 有什么区别。
@explon 没怎么用过 zendframework,特意跑去看了下 https://docs.zendframework.com/zend-db/,还真没看出来 Zend DB 在联表查询方面强在哪儿(且不说它实现过于臃肿),query builder 常用的 select where order limit 等方法大部分框架和库都大同小异不一定谁比谁强,至于联表查询我找了半天找到了一个 join,看看它的写法$select -> join('table1','table2.field2= table1.field1'),table2.field2= table1.field1 是什么鬼到底是原生 SQL 还是 query 语法,混在一起不伦不类,还不如直接写 SQL,还有子查询 一对多 多得多的联表查询方法在哪我也没找到。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4207 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 14ms · UTC 05:31 · PVG 13:31 · LAX 21:31 · JFK 00:31
Developed with CodeLauncher
♥ Do have faith in what you're doing.