2018-11-01 12:22:53 1635次浏览 0条回答 0 悬赏 100 金钱

本人使用 Yii2 (2.0.15.1 March 21, 2018) 进行开发,辅助日志,发现 Orm 单条资源相关查询有些问题(可能是测试有误、或者使用有误,欢迎打脸,共同进步)

Orm 查询单条记录常用查询
$query = ['name' => '张三'];
User::findOne($query);
User::find()->where($query)->one()

以上 Orm 方式查询的实际 sql 变成了
select * from user where name = '张三';//手敲的,大致这个意思

如果查询结果包含多条数据,会全部返回,然后在 one() 相关方法中取出一条,及其占用内存

目前个人是尽可能少用 findOne() 及 没有 limit() 的 one() ,调整如下
User::find()->where($query)->limit(1)->one()

$config['components']['log']['targets'][] =  [
    'class' => 'yii\log\FileTarget',
    'levels' => ['info'],
    'logFile' => '@app/runtime/logs/log_'.date('Ym').'.log',
    'categories' => ['yii\db\Command::*',],
    'logVars' => ['trace'],
    'prefix' => function ($message) {
        return '';
    },
];

希望能够确认猜测,并得到较好的优化方案或使用技巧

    没有找到数据。
您需要登录后才可以回答。登录 | 立即注册
specialnot
总监

specialnot

注册时间:2015-08-06
最后登录:2019-08-16
在线时长:27小时54分
  • 粉丝43
  • 金钱1175
  • 威望200
  • 积分3445

热门问题