详解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 相关文章推荐
社区(php&amp;&amp;mysql)四
Oct 09 PHP
菜鸟学PHP之Smarty入门
Jan 04 PHP
PHP函数常用用法小结
Feb 08 PHP
有关php运算符的知识大全
Nov 03 PHP
PHP中fwrite与file_put_contents性能测试代码
Aug 02 PHP
php中读写文件与读写数据库的效率比较分享
Oct 19 PHP
php实现按文件名搜索文件的远程文件查找器
May 10 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
Jul 31 PHP
php实现登录tplink WR882N获取IP和重启的方法
Jul 20 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
Mar 12 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
Mar 07 PHP
php实现微信公众号创建自定义菜单功能的实例代码
Jun 11 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
php下使用SMTP发邮件的代码
2008/01/10 PHP
基于PHP常用函数的用法详解
2013/05/10 PHP
php检查页面是否被百度收录
2015/10/28 PHP
PHP基于SMTP协议实现邮件发送实例代码
2017/04/27 PHP
php进程(线程)通信基础之System V共享内存简单实例分析
2019/11/09 PHP
tp5框架基于ajax实现异步删除图片的方法示例
2020/02/10 PHP
Ajax一统天下之Dojo整合篇
2007/03/24 Javascript
JavaScript 判断判断某个对象是Object还是一个Array
2010/01/28 Javascript
JS实现标签页效果(配合css)
2013/04/03 Javascript
JS 去前后空格大全(IE9亲测)
2013/07/15 Javascript
js登录弹出层特效
2014/03/07 Javascript
Extjs的FileUploadField文件上传出现了两个上传按钮
2014/04/29 Javascript
jQuery CSS()方法改变现有的CSS样式表
2014/09/09 Javascript
jquery常用函数与方法汇总
2015/09/01 Javascript
精通JavaScript的this关键字
2020/05/28 Javascript
window.open不被拦截的简单实现代码(推荐)
2016/08/04 Javascript
前端弹出对话框 js实现ajax交互
2016/09/09 Javascript
Jquery根据浏览器窗口改变调整大小的方法
2017/02/07 Javascript
妙用Angularjs实现表格按指定列排序
2017/06/23 Javascript
JavaScript+HTML5实现的日期比较功能示例
2017/07/12 Javascript
jQuery选择器之表单元素选择器详解
2017/09/19 jQuery
jQuery仿移动端支付宝键盘的实现代码
2018/08/15 jQuery
js控制随机数生成概率代码实例
2019/03/21 Javascript
详解JavaScript中关于this指向的4种情况
2019/04/18 Javascript
微信小程序地图导航功能实现完整源代码附效果图(推荐)
2019/04/28 Javascript
YUV转为jpg图像的实现
2019/12/09 Python
前端面试必备之html5的新特性
2017/09/05 HTML / CSS
AmazeUI折叠式卡片布局,整合内容列表、表格组件实现
2020/08/20 HTML / CSS
澳大利亚连衣裙和女装在线:Esther
2017/11/11 全球购物
数控加工专业毕业生自荐信
2013/09/27 职场文书
大学生新学期计划书
2014/04/28 职场文书
岗位职责说明书
2014/05/07 职场文书
医院竞聘演讲稿
2014/05/16 职场文书
初中学习计划书范文
2014/09/15 职场文书
2015年优质护理服务工作总结
2015/04/08 职场文书
宿舍卫生管理制度
2015/08/05 职场文书