邓高鹃 2016-12-12 17:51:41 7969次浏览 3条评论 4 2 0

在今天没有事做的时候想了解一下yii\db\ActiveQuery这个类的用法,各种百度各种谷歌还是想不到相应的文档。最后靠的是白狼的指导。最后才理解。那我今天来说说具体的用法。首先我们来看看官方的文档。我是看文档了才去百度的。
官方的文档是这样说的。yii\db\ActiveQuery这个类是一个数据库查询的类,它与活动记录yii\db\ActiveQuery有关。
看看他的查询方法:
one()返回一个记录填充数据的第一行
all()基于查询结果返回所有记录
count()返回的记录数
sum()返回指定列求和
average()返回指定列的平均
min()返回指定列的最小值
max()返回指定列的最大值
scaler()返回值的第一行第一列的查询结果
column()返回查询结果的第一列的值
exists()返回一个值指示是否查询结果数据
with()应该执行该查询的关系列表
indexBy()列的名称应该索引的查询结果
asArray()是否每条记录作为一个数组返回

现在看看具体的用法:
1、创建一个控制器AdminController.php

<?php
namespace backend\controllers;
//使用模型
use backend\models\Admin;
use yii;
use yii\web\Controller;
	class AdminController extends Controller{		
		public function actionIndex(){	
			$a = (new yii\db\ActiveQuery(Admin::classname()))->limit(1)->asArray()->all();
			var_dump($a);		
		}
				
	}
?>

2、创建一个Admin模型:

<?php
namespace backend\models;
use yii\db\ActiveRecord;
use yii\base\Model;

class Admin extends ActiveRecord {
    public static function tableName() {
        return '{{%book}}';
    }
}

最后访问一下控制器里面的方法就可以了!小伙伴们也可以根据上面的方法一个一个测试。
在这里特别感谢白狼的指导!学习在于分享。我们共同创造更好的平台。

觉得很赞
  • 评论于 2017-02-27 13:39 举报

    相关文档很少,现在还没弄清楚这个ActiveQuery跟ActiveRecord有什么关系

  • 评论于 2017-02-27 13:54 举报

    视乎想明白了一点,这个是自己定做查询函数,个人一般不太适合修改这些,这是个人见解,如果不对后面的来修改

  • 评论于 2018-12-14 13:51 举报

    这个问题一直没搞明白,个人实践中,使用gii生成model的时候一般不勾选 Generate ActiveQuery,
    估计搞清楚这个问题还得重点研究下ActiveRecord与ActiveQuery的关系和使用

您需要登录后才可以评论。登录 | 立即注册