• yii2使用小知识(连续补充)


    1,打印ar或者query的原始sql:

    $query = (new yiidbQuery())
    ->select(['a.username','b.item_name'])
    ->from(['a' => 'user'])
    ->leftJoin(['b' => 'auth_assignment'], 'a.id = b.user_id')
    ->where(['a.username' => 'admin'])
    ->andWhere(['between', 'a.created_at', 1467626063, 1467626064])
    ->limit(10);

    // get the AR raw sql in YII2

    $commandQuery = clone $query;

    echo $commandQuery->createCommand()->getRawSql();

    注意$query不能带all,find() 返回值类型是 yiidbActiveQuery, find()->all() 返回的就是数组了。

    $users = $query->all();可在同级结构获取多表数据

    2,class User {

    public function getUsergroup()
    {
    return $this->hasOne(AuthAssignment::className(), ['user_id' => 'id']);
    }

    }

    $model = User::find()->joinWith('usergroup')

    ->where(['auth_assignment.item_name'=>'超级管理员'])->one();

    访问$model ->usergroup->item_name得到关联表数据

    ->select(['user.username','auth_assignment.item_name'])无法获取item_name,不可在同级结构获取多表数据

    3,

    $a= User::find()
    ->select(['user.username', 'b.item_name'])
    ->leftJoin(['b' => 'auth_assignment'], 'user.id = b.user_id')
    ->andWhere(['user.username' => 'admin'])
    ->andWhere(['between', 'user.created_at', 1467626063, 1467626064])
    ->limit(10)->all();

    同样的,无法得到item_name的值,但是可以第一次就用andWhere替代where可得到正确结果

  • 相关阅读:
    易经03
    易经02
    易经01
    机器学习Ng-01
    离散数学-01
    新概念4-21
    新概念4-20
    新概念4-19
    nefu 120 Lucas-Lehmer 梅森素数判别法
    nefu 120 Lucas-Lehmer 梅森素数判别法 二分-大数乘法换加法
  • 原文地址:https://www.cnblogs.com/huanxiyun/p/5699081.html
Copyright © 2020-2023  润新知