全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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'], 
  ], 
]); ?> 

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


# Yii AR 联表查询  # yii2.0联表查询  # yii2.0 两表联查  # 第一个  # 中文网  # 第二个  # 有两种  # 贴出  # 第二种  # 要使  # 第一种  # 大家多多  # 以供  # 文章分类  # 则说  # extends  # brush  # php  # pre  # class  # Article  # yii  # static 


相关文章: c# await 一个已经完成的Task会发生什么  电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  如何快速搭建高效服务器建站系统?  如何通过西部数码建站助手快速创建专业网站?  北京的网站制作公司有哪些,哪个视频网站最好?  七夕网站制作视频,七夕大促活动怎么报名?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  如何在阿里云虚拟主机上快速搭建个人网站?  招贴海报怎么做,什么是海报招贴?  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  建站之星图片链接生成指南:自助建站与智能设计教程  建站10G流量真的够用吗?如何应对访问高峰?  网站制作员失业,怎样查看自己网站的注册者?  做企业网站制作流程,企业网站制作基本流程有哪些?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  如何在宝塔面板创建新站点?  如何将凡科建站内容保存为本地文件?  如何选购建站域名与空间?自助平台全解析  个人摄影网站制作流程,摄影爱好者都去什么网站?  济南网站建设制作公司,室内设计网站一般都有哪些功能?  建站之星安装失败:服务器环境不兼容?  专业公司网站制作公司,用什么语言做企业网站比较好?  如何在企业微信快速生成手机电脑官网?  建站上市公司网站建设方案与SEO优化服务定制指南  香港服务器建站指南:免备案优势与SEO优化技巧全解析  网站插件制作软件免费下载,网页视频怎么下到本地插件?  魔方云NAT建站如何实现端口转发?  如何通过西部建站助手安装IIS服务器?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  如何在IIS中新建站点并配置端口与IP地址?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  如何自定义建站之星模板颜色并下载新样式?  如何基于PHP生成高效IDC网络公司建站源码?  小型网站建站如何选择虚拟主机?  一键网站制作软件,义乌购一件代发流程?  如何在阿里云香港服务器快速搭建网站?  建站主机选购指南:核心配置优化与品牌推荐方案  制作网站外包平台,自动化接单网站有哪些?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  简单实现Android验证码  如何在腾讯云服务器上快速搭建个人网站?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  建站之星如何实现网站加密操作?  如何用腾讯建站主机快速创建免费网站?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  网站制作公司排行榜,抖音怎样做个人官方网站  哈尔滨网站建设策划,哈尔滨电工证查询网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。