全网整合营销服务商

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

免费咨询热线: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 


相关文章: 如何用VPS主机快速搭建个人网站?  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  如何安全更换建站之星模板并保留数据?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何通过WDCP绑定主域名及创建子域名站点?  建站之星如何一键生成手机站?  网站制作公司排行榜,抖音怎样做个人官方网站  魔毅自助建站系统:模板定制与SEO优化一键生成指南  如何在云主机上快速搭建多站点网站?  建站主机核心功能解析:服务器选择与网站搭建流程指南  在线制作视频的网站有哪些,电脑如何制作视频短片?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  如何在阿里云ECS服务器部署织梦CMS网站?  小型网站建站如何选择虚拟主机?  详解jQuery停止动画——stop()方法的使用  微课制作网站有哪些,微课网怎么进?  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  焦点电影公司作品,电影焦点结局是什么?  广平建站公司哪家专业可靠?如何选择?  网站制作需要会哪些技术,建立一个网站要花费多少?  如何配置FTP站点权限与安全设置?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  建站之星安装后如何自定义网站颜色与字体?  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  如何用腾讯建站主机快速创建免费网站?  高防服务器租用指南:配置选择与快速部署攻略  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  网站制作软件有哪些,制图软件有哪些?  免费ppt制作网站,有没有值得推荐的免费PPT网站?  小建面朝正北,A点实际方位是否存在偏差?  如何构建满足综合性能需求的优质建站方案?  重庆市网站制作公司,重庆招聘网站哪个好?  建站主机如何选?高性价比方案全解析  c# 在ASP.NET Core中管理和取消后台任务  javascript中对象的定义、使用以及对象和原型链操作小结  高端建站如何打造兼具美学与转化的品牌官网?  如何快速搭建个人网站并优化SEO?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  如何配置IIS站点权限与局域网访问?  昆明网站制作哪家好,昆明公租房申请网上登录入口?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  javascript中的try catch异常捕获机制用法分析  常州企业建站如何选择最佳模板?  子杰智能建站系统|零代码开发与AI生成SEO优化指南  如何通过二级域名建站提升品牌影响力?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  企业微网站怎么做,公司网站和公众号有什么区别?  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说? 

您的项目需求

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