详解Yii2.0使用AR联表查询实例
发布时间 - 2026-01-11 01:54:44 点击率:次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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何实现用户注册和登录?(Auth脚手架指南)
Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】
javascript基本数据类型及类型检测常用方法小结
为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】
如何在IIS7中新建站点?详细步骤解析
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】
Java垃圾回收器的方法和原理总结
香港服务器网站卡顿?如何解决网络延迟与负载问题?
如何续费美橙建站之星域名及服务?
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
免费网站制作appp,免费制作app哪个平台好?
Laravel如何使用Gate和Policy进行授权?(权限控制)
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
php结合redis实现高并发下的抢购、秒杀功能的实例
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
Laravel如何使用.env文件管理环境变量?(最佳实践)
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
三星、SK海力士获美批准:可向中国出口芯片制造设备
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
无锡营销型网站制作公司,无锡网选车牌流程?
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
焦点电影公司作品,电影焦点结局是什么?
JavaScript如何实现继承_有哪些常用方法
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件
微信小程序 require机制详解及实例代码
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
奇安信“盘古石”团队突破 iOS 26.1 提权
Laravel如何创建自定义Facades?(详细步骤)
香港服务器租用每月最低只需15元?
Java类加载基本过程详细介绍
HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
详解Huffman编码算法之Java实现
非常酷的网站设计制作软件,酷培ai教育官方网站?
网站制作报价单模板图片,小松挖机官方网站报价?
高防服务器租用如何选择配置与防御等级?
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
如何登录建站主机?访问步骤全解析
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
Laravel Blade模板引擎语法_Laravel Blade布局继承用法
如何快速查询域名建站关键信息?
Linux网络带宽限制_tc配置实践解析【教程】
昵图网官网入口 昵图网素材平台官方入口
Linux后台任务运行方法_nohup与&使用技巧【技巧】

