详解Yii2.0使用AR联表查询实例


Posted in PHP onJune 16, 2017

Yii2.0中使用联表查询有两种办法,第一种是查询构建器(Query Builder),第二种使用活动记录(Active Record),中文网对查询构建器讲的很详细,AR则说的很坑爹,下面贴出自己实践的方法,以供参考。

两个表

{{%article}} 和 {{%article_class}}

{{%article}} .article_class关联{{%article_class}}.id

1、要使用AR做关联查询,首先在models {Article} 中创建关联:

class Article extends \yii\db\ActiveRecord 
{ 
  //这里声明被关联字段 
  public $class_name; 
   
  /** 
   * @inheritdoc 
   */ 
  public static function tableName() 
  { 
    return '{{%article}}'; 
  } 
  ... 
 //关联 mysite_article_class 表 
  public function getArticleClass(){ 
    /** 
    * 第一个参数为要关联的子表模型类名称, 
    * 第二个参数指定通过子表的 id 去关联主表的 article_class 字段 
    */ 
    return $this->hasMany(ArticleClass::className(), ['id' => 'article_class']); 
  }  
   
}

2、在controllers {ArticleController}中使用,

public function actionIndex() 
  {   
    $article = new Article(); 
    if(Yii::$app->request->get('class')){ 
      $query = Article::find() 
          ->joinWith('articleClass') 
          ->select(['{{%article}}.*,{{%article_class}}.class_name']) 
          ->where(['article_class' => Yii::$app->request->get('class')]); 
      $dataProvider = new ActiveDataProvider([ 
        'query' => $query, 
      ]); 
       
    }else{ 
      $query = Article::find() 
          ->joinWith('articleClass') 
          ->select(['{{%article}}.*,{{%article_class}}.class_name']); 
      $dataProvider = new ActiveDataProvider([ 
        'query' => $query, 
      ]); 
       
    } 
    return $this->render('index', [ 
      'dataProvider' => $dataProvider, 
      'model' => $article, 
    ]); 
  }

3、在view {GridView}中使用

<?= GridView::widget([ 
  'dataProvider' => $dataProvider, 
  'columns' => [ 
    ['class' => 'yii\grid\SerialColumn'], 
    'id', 
    //'article_content:ntext', 
    [ 
      'value'=>'class_name', 
      'label'=>'文章分类', 
    ], 
    'article_title', 
    'article_addtime:datetime', 
    // 'article_updatetime:datetime', 
    // 'article_author', 
    ['class' => 'yii\grid\ActionColumn'], 
  ], 
]); ?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
数据库相关问题
Oct 09 PHP
用PHP制作静态网站的模板框架(四)
Oct 09 PHP
PHP session有效期问题
Apr 26 PHP
分享PHP守护进程类
Dec 30 PHP
orm获取关联表里的属性值
Apr 17 PHP
PHP导出带样式的Excel示例代码
Aug 28 PHP
ThinkPHP中create()方法自动验证实例
Apr 26 PHP
PHP实现的简单AES加密解密算法实例
May 29 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
Jun 13 PHP
laravel5实现微信第三方登录功能
Dec 06 PHP
thinkphp5使用无限极分类
Feb 18 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
Apr 26 PHP
详解Yii2 之 生成 URL 的方法
Jun 16 #PHP
PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
Jun 16 #PHP
php使用str_replace替换多维数组的实现方法分析
Jun 15 #PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
Jun 15 #PHP
php7基于递归实现删除空文件夹的方法示例
Jun 15 #PHP
php实现的二叉树遍历算法示例
Jun 15 #PHP
深入浅析PHP的session反序列化漏洞问题
Jun 15 #PHP
You might like
ezSQL PHP数据库操作类库
2010/05/16 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
javascript 限制输入脚本大全
2009/11/03 Javascript
jquery 可排列的表实现代码
2009/11/13 Javascript
Javascript 面试题随笔
2011/03/31 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
2011/06/27 Javascript
javascript陷阱 一不小心你就中招了(字符运算)
2013/11/10 Javascript
textarea 控制输入字符字节数(示例代码)
2013/12/27 Javascript
jQueryMobile之Helloworld与页面切换的方法
2015/02/04 Javascript
JavaScript绑定事件监听函数的通用方法
2016/05/14 Javascript
JavaScript函数基础详解
2017/02/03 Javascript
JavaScript数据结构之数组的表示方法示例
2017/04/12 Javascript
Vue导出json数据到Excel电子表格的示例
2017/12/04 Javascript
微信小程序实现列表下拉刷新上拉加载
2020/07/29 Javascript
vue实现添加与删除图书功能
2018/10/07 Javascript
javascript匿名函数中的'return function()'作用
2018/10/15 Javascript
原生JS实现手动轮播图效果实例代码
2018/11/22 Javascript
vuex + keep-alive实现tab标签页面缓存功能
2019/10/17 Javascript
vue+vant-UI框架实现购物车的复选框全选和反选功能
2019/11/05 Javascript
vue自定义标签和单页面多路由的实现代码
2020/05/03 Javascript
纯JS开发baguetteBox.js响应式画廊插件
2020/06/28 Javascript
vue开发简单上传图片功能
2020/06/30 Javascript
js实现搜索提示框效果
2020/09/05 Javascript
python ip正则式
2009/05/07 Python
python3 发送任意文件邮件的实例
2018/01/23 Python
使用pandas对矢量化数据进行替换处理的方法
2018/04/11 Python
详解python算法之冒泡排序
2019/03/05 Python
pytorch 更改预训练模型网络结构的方法
2019/08/19 Python
Centos7 下安装最新的python3.8
2019/10/28 Python
django 读取图片到页面实例
2020/03/27 Python
利用HTML5+CSS3实现3D转换效果实例详解
2017/05/02 HTML / CSS
公安机关查摆剖析材料
2014/10/10 职场文书
幼儿园见习报告范文
2014/10/30 职场文书
2014年营销工作总结
2014/11/22 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书