Yii ActiveRecord 的via和viaTable示例
Yii中,将两个不相关的表利用中间表关联有via和viaTable两种方法,这里通过用户权限查询来进行示例。
关系如上,需要建立三个表 用户表 权限表
用户表
数据:
权限表
数据:
关联表
数据:
然后创建权力模型
<?phpnamespace app\models;use yii\db\ActiveRecord;class Power extends ActiveRecord
{public static function tableName(){return 'power';}
}
用户模型
<?phpnamespace app\models;use yii\db\ActiveRecord;
use app\models\Power;class Users extends ActiveRecord
{public static function tableName(){return 'users';}public function getPower(){return $this -> hasMany(Power::class, ['id' => 'power_id']) -> viaTable('users-power', ['user_id' => 'user_id']);}
}
关联模型:
<?phpnamespace app\models;use yii\db\ActiveRecord;class UserPower extends ActiveRecord
{public static function tableName(){return 'users-power';}
}
控制器代码
<?phpnamespace app\controllers;use yii\web\Controller;
use app\models\Users;
use app\models\Power;class UserController extends Controller
{public function actionIndex(){//查询user_id为6的用户权限 $user = Users::findOne(['user_id' => 6]);print_r( $user -> getPower() -> asArray() -> all());}
}
运行结果:
其中用户模型中通过viaTable来通过关联表查询
$this -> hasMany(Power::class, ['id' => 'power_id']) -> viaTable('users-power', ['user_id' => 'user_id']);
各个数组字段参数含义,hasMany第二个数组中,键名为前面的Power::class对应的模型id字段,值为关联表中前面Power::class的id对应的字段,即power表中的id对应关联表中的power_id, viaTable第二个参数数组,键名为关联表中的字段,值为当前primaryModel对应的字段,即关联表中的user_id对应当前user表中的user_id。
via方法
via参数为AR类中定义的关联名,修改用户模型:
<?phpnamespace app\models;use yii\db\ActiveRecord;
use app\models\Power;
use app\models\UserPower;class Users extends ActiveRecord
{public static function tableName(){return 'users';}//通过getUserPower来进行操作public function getUserPower(){return $this -> hasMany(UserPower::class, ['user_id' => 'user_id']);}public function getPower($uid = 6){return $this -> hasMany(Power::class, ['id' => 'power_id']) -> via('userPower');}
}
运行:
转载于:https://www.cnblogs.com/yangxunwu1992/p/5954615.html
Yii ActiveRecord 的via和viaTable示例相关推荐
- yii php 弹窗,Yii框架弹出框功能示例
本文实例讲述了Yii框架弹出框功能.分享给大家供大家参考,具体如下: <?php $this->beginWidget('zii.widgets.jui.CJuiDialog', arra ...
- PHP 从菜鸟到大咖的踩坑之路
https://cloud.tencent.com/developer/article/1464655 电商Sku设计思维 https://xlswriter-docs.viest.me/zh-cn/ ...
- php中target用法,Yii使用DbTarget实现日志功能的示例代码
一:在配置文件的log组件中配置DbTarget 'log' => [ 'traceLevel' => YII_DEBUG ? 3 : 0, 'targets' => [ [ 'cl ...
- php yii框架连接数据库,Yii 框架使用数据库(databases)的方法示例
本文实例讲述了Yii 框架使用数据库(databases)的方法.分享给大家供大家参考,具体如下: 配置数据库连接 ¶ 开始之前,请确保你已经安装了 PHP PDO 扩展和你所使用的数据库的 PDO ...
- php detailview,PHP开发框架Yii Framework教程(31) Zii组件-DetailView示例
CDetailView为某个Model显示详细内容.这个要显示的Model可以为CModel或是关联数组. CDetailView通过配置 attributes来决定Model的那些属性需要显示已经以 ...
- Yii Framework 开发教程(32) Zii组件-GridView示例
CGridView 以表格的形式显示数据,CGridView 也支持分页和排序,CGridView最基本的用法和ListView类型,也是通过设置 data provider,通常是CActiv ...
- Yii Framework 开发教程(30) Zii组件-ListView 示例
CListView可以用来显示列表,CListView支持使用自定义的View模板显示列表的的记录,因此可以非常灵活的显示数据的表,这点有点像Android的ListView:-). CListVie ...
- Yii Framework 开发教程(31) Zii组件-DetailView 示例
CDetailView为某个Model显示详细内容.这个要显示的Model可以为CModel或是关联数组. CDetailView通过配置 attributes来决定Model的那些属性需要显示 ...
- Yii Framework 开发教程Zii组件-Tabs示例
有关Yii Tab类: http://www.yiichina.com/api/CTabView http://www.yiichina.com/api/CJuiTabs http://blog.cs ...
最新文章
- 开启ubuntu的SSH服务,使用终端远程控制
- 重写描述符(property)魔法方法时可能遇到的问题
- Qt中的QMessageBox
- 添加github ssh 公钥
- 5行代码解决——L1-042 日期格式化 (5分)
- 抖音云控_抖音云控/快手云控:引领5G电商短视频新潮流
- 泰国能源部携手本土企业打造智慧城市
- ubuntu apt-get常用命令
- 系统变量之System.getenv()和System.getProperty()
- 员工人事档案包括哪些内容?
- 小米手机开发者模式怎么打开?简单,只要三步
- 蓝桥杯练习题之圆的面积
- python应聘项目经历怎么写_简历中、面试中,怎么描述你的工作/项目经历?
- 直方图实现快速中值滤波opencv
- 动态规划石子排序java_动态规划之石子归并
- 微型计算机最大的电路板是,微型计算机系统中最大的一块电路板被称作 。
- 常见专业术语名词解释(持续更新)
- 记一次华为RH2288-3V _X86架构服务器的操作系统安装
- 在phpstudy的环境下,如何配置php虚拟主机。
- 大学生HTML作业节日网页 HTML作业节日文化网页期末作业 html+css+js节日网页 HTML学生节日介绍 HTML学生作业网页视频
热门文章
- Delphi中文件名函数-路径、名称、子目录、驱动器、扩展名
- 《JAVA练习题目8》 编写一个类Person,包含的属性和方法如下: 属性:字符串类型的名字name,字符类型的性别gender,和整型的序号number
- mysql的存储引擎种类,mysql 存储引擎,基本数据类型
- java用爬虫爬一个页面_使用Java写一个简单爬虫爬取单页面
- 非极大值抑制_非极大值抑制(Non-Maximum Suppression)
- golang json转结构体中嵌套多个数组_ElasticSearch第六篇:复合数据类型-数组,对象...
- python比前端好学吗_前端学习到底难不难?
- java ui设计用什么_UI设计是什么?UI怎么设计?
- css3 高度最小100%,100%最小高度CSS布局
- C++编程进阶9(如何将构造函数和非成员函数虚化、无锁单例模式)