Yii2.0框架模型多表关联查询示例


Posted in PHP onJuly 18, 2019

本文实例讲述了Yii2.0框架模型多表关联查询。分享给大家供大家参考,具体如下:

联表查询--hasMany:

use app\models\User;
$right = Right::findOne(2);
//$user = User::find()->where(['right_id' => $right->attributes['id']])->all();
$user = $right->hasMany(User::className(),['right_id' => 'id'])->all();
//right_id为User::className()表中字段,id为Right::findOne(2)表字段

多表关联一对多查询优化

如果多次用到同表相同查询:

\models\Rught.php

namespace app\models;
use \yii\db\ActiveRecord;
class Right extends ActiveRecord
{
  public function getUsers()
  {
    $users = $this->hasMany(User::className(),['right_id' => 'id'])->asArray()p->all();
    return $users;
  }
}

\controller\home\actionAbout

public function actionAbout()
{
  $right = Right::findOne(2);
//  $users = $right->getRights();
  $users = $right->rights;
  dd($users);
  return $this->render('about');
}

多表关联一对一查询

\models\User.php

namespace app\models;
use \yii\db\ActiveRecord;
class User extends ActiveRecord
{
  public function getRight()
  {
    $right = $this->hasOne(Right::className,['id' => 'right_id'])->asArray();
    return $right;
  }
}

\controller\home\actionAbout

$user = User::findOne(1);
$right = $user->user;
dd($right);
return $this->render('about');

join

//查询关联表的所有数据
$user = User->find()->with('right')->asArray()->all();

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php 不同编码下的字符串长度区分
Sep 26 PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
May 10 PHP
使用PHP编写发红包程序
Jul 22 PHP
php常量详细解析
Oct 27 PHP
简单谈谈PHP中strlen 函数
Feb 27 PHP
Symfony模板的快捷变量用法实例
Mar 17 PHP
php获取服务器操作系统相关信息的方法
Oct 08 PHP
php实现的http请求封装示例
Nov 08 PHP
PHP实现时间比较和时间差计算的方法示例
Jul 24 PHP
如何利用预加载优化Laravel Model查询详解
Aug 11 PHP
PHP实现负载均衡session共享redis缓存操作示例
Aug 22 PHP
PHP实现支持CURL字符串证书传输的方法
Mar 23 PHP
php和redis实现秒杀活动的流程
Jul 17 #PHP
php web环境和命令行环境下查找php.ini的位置
Jul 17 #PHP
php命名空间设计思想、用法与缺点分析
Jul 17 #PHP
php和C#的yield迭代器实现方法对比分析
Jul 17 #PHP
php基于协程实现异步的方法分析
Jul 17 #PHP
php学习笔记之字符串常见操作总结
Jul 16 #PHP
thinkPHP+mysql+ajax实现的仿百度一下即时搜索效果详解
Jul 15 #PHP
You might like
通过PHP修改Linux或Unix口令的方法分享
2012/01/30 PHP
PHP最常用的2种设计模式工厂模式和单例模式介绍
2012/08/14 PHP
解析CodeIgniter自定义配置文件
2013/06/18 PHP
学习php设计模式 php实现命令模式(command)
2015/12/08 PHP
CI框架中数据库操作函数$this->db->where()相关用法总结
2016/05/17 PHP
详解PHP字符串替换str_replace()函数四种用法
2017/10/13 PHP
在 IE 中调用 javascript 打开 Excel 表
2006/12/21 Javascript
随机显示经典句子或诗歌的javascript脚本
2007/08/04 Javascript
Javascript 汉字字节判断
2009/08/01 Javascript
jQuery的一些特性和用法整理小结
2010/01/13 Javascript
JavaScript 变量作用域分析
2011/07/04 Javascript
JavaScript中的replace()方法使用详解
2015/06/06 Javascript
基于jquery实现轮播特效
2016/04/22 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
详细谈谈javascript的对象
2016/07/31 Javascript
使用ES6语法重构React代码详解
2017/05/09 Javascript
jQuery遮罩层实例讲解
2017/05/11 jQuery
React Js 微信禁止复制链接分享禁止隐藏右上角菜单功能
2017/05/26 Javascript
Windows下快速搭建NodeJS本地服务器的步骤
2017/08/09 NodeJs
深入浅析vue组件间事件传递
2017/12/29 Javascript
vue利用v-for嵌套输出多层对象,分别输出到个表的方法
2018/09/07 Javascript
Python进程间通信用法实例
2015/06/04 Python
Python中的urllib模块使用详解
2015/07/07 Python
python中模块查找的原理与方法详解
2017/08/11 Python
python3+PyQt5实现拖放功能
2018/04/24 Python
Python读写及备份oracle数据库操作示例
2018/05/17 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
Python 根据数据模板创建shapefile的实现
2019/11/26 Python
Python如何将装饰器定义为类
2020/07/30 Python
基于第一个PhoneGap(cordova)的应用详解
2013/05/03 HTML / CSS
sleep()方法和wait()方法的区别是什么
2012/11/17 面试题
请问软件开发中的设计模式你会使用哪些
2015/05/13 面试题
课程改革实施方案
2014/03/16 职场文书
社区综治工作汇报
2014/10/27 职场文书
考试没考好检讨书
2015/05/06 职场文书
小学班级标语口号大全
2015/12/26 职场文书