标量查询
Post::find()->select('title')->where(['user_id' => $userId])->scalar();
生成 SQL
SELECT `title` FROM `post` WHERE `user_id`=1
直接输出 title
的值。
如果 select('title')
不写的话,生成 SQL 是:
`SELECT * FROM `post` WHERE `user_id`=1`
直接输出 id
的值
先指定 error 的页面,然后根据异常的code分别渲染不同的视图。只提供思路,未验证。
参考文档:http://www.yiiframework.com/doc-2.0/guide-runtime-handling-errors.html#using-error-actions
使用表达式实现计数器:
PackageCardSold::updateAll(
$condition + ['consume_num' => new Expression('`consume_num` + 1'), 'last_consume_item' => $consumerCode->remark, 'updated_at' => time()],
['trade_no' => $consumerCode->trade_no]
);
对于你说的「痛苦的开发」,其实还有一种解决方式,就是在 Model 层使用 afterSave
来关联操作,并且记得要启动事务。
可以看看这个 https://getyii.com/topic/358
首先感谢分享,总结的很不错,我相信这些过程都是程序开发的必经成长之路。
前面几个都很认同,并且 service 层在 GetYii 也有实践。
最后分享的一个「读写分离」没搞懂什么意思? 对于「读写分离」我所谓的理解,不应该是数据库读写分离吗?使用你这种方式就真的能实现吗?
其实用 service 层来解决问题的同事也会带来一些另外的问题,所以现在都在使用「微服务」和「领域驱动设计」。