位置: 编程技术 - 正文

实例讲解YII2中多表关联的使用方法

编辑:rootadmin

推荐整理分享实例讲解YII2中多表关联的使用方法,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

本文对 YII2.0 的多表关联查询做一个简单的介绍。文中通过实例代码介绍的非常详细,下面话不多说,来一起看看详细的介绍:

首先先来说明一下表结构

表结构

现在有订单表、用户表、商品清单表、商品库存表

在YII中,如果想直接关联其他表进行查询的话,需要先在模型里定义它们的关联

Order

1、hasMany、hasOne使用

Yii2中的表之间的关联有2种,它们用来指定两个模型之间的关联。

●一对多:hasMany ●一对一:hasOne

●返回结果:这两个方法的返回结果都为yiidbActiveQuery对象(如果你想最后返回的是标准数组形式,记得加上asArray()参数)

●第一个参数:所关联的模型的类名称。

●第二个参数:是一个数组,其中键为所关联的模型中的属性,值为当前模型中的属性。

实例讲解YII2中多表关联的使用方法

关联的使用

现在我们来尝试获取一个订单

当然你可以选择使用with方法,这样看起来简洁一些,其中with的参数为关系的名称,也就在model里面定义的getUser中的user.

上面的代码会生成并执行如下的sql语句

从上面可以看出访问一个关联的时候有两种方法

●如果以函数的方式调用,会返回一个 ActiveQuery 对象($customer->getOrders()->all())

●如果以属性的方式调用,会直接返回模型的结果($customer->orders)

关联结果缓存

如果这时order表发生了改变,我们希望再次查询的话

再次得到订单的时候你会发现没有变化。原因是只会在第一次执行$order->user的时候才会去数据库里面查询,然后会把结果缓存起来,以后查询的时候都不会再执行sql。

那么如果你想再次执行sql如何做呢?可以执行

跨表查询

下面重点来了!通过上面表结构的图可以看到,User表和Order_goods表示没有直接关联的,那么如果我们想根据用户信息查找这个用户买了哪些商品的话,就势必需要通过Order表去关联两张表。那么该怎么做呢?首先还是model层。因为我们是根据用户去查,所以到User的model层去定义关联。

User

这里注意:getOrderGoods中的第二个order_id是指getOrder关联的Order中的order_id,第一个order_id是指OrderGoods中的order_id。

但是!我们还有最简单的方法,那就是使用SQL语句啦!

这样基本就是整个关联部分了

总结

标签: 实例讲解YII2中多表关联的使用方法

本文链接地址:https://www.jiuchutong.com/biancheng/291012.html 转载请保留说明!

上一篇:Laravel接收前端ajax传来的数据的实例代码(laravel app接口)

下一篇:YII2框架中excel表格导出的方法详解(yii2框架中文手册)

  • 核定征收企业所得税率是多少
  • 个人所得税手续费返还属于政府补助吗
  • 利润分配未分配利润是什么科目
  • 季度预交所得税多年末应交少怎么计提
  • 出口退税正式申报撤销申请
  • 社保基数是按税前工资还是税后工资
  • 本月进项税大于销项税有留底,如何做会计分录
  • 平销返利企业所得税处理
  • 记账凭证日期填写哪一天
  • 税务部门罚没收入200元
  • 服务业发票丢失怎么处理
  • 处置全资子公司税务处理
  • 自查增值税补缴怎么处理
  • 公司开给个人的发票有什么用
  • 有产权车位转让需要什么手续和费用
  • 个人转账收入要缴税吗
  • 小规模纳税人定额发票累计领用金额
  • 农民专业合作经济组织可以贷款吗
  • 买一赠一商品必须一样吗
  • 上年度所得税费用又退回来了,如何做账
  • 中小企业信用服务平台
  • 工商年报中企业税费缴纳怎么填写
  • 出售使用过的车辆如何交印花税呢
  • 其他货币资金期末处理
  • 在windows 7中
  • php ioc
  • PHP+Mysql+jQuery文件下载次数统计实例讲解
  • win10蓝牙搜索不到ps4手柄
  • 发票盖章有讲究吗
  • 文化传媒公司的部门
  • airpods怎么注销主人
  • packet命令
  • 物业公司属于生活性服务业吗
  • 未分配利润为负数严重吗
  • js方案
  • 建筑业营改增前后区别
  • 电脑自学网
  • 关于预计净残值的计算题及答案
  • 资产负债表没有
  • 原材料报废卖掉会计分录
  • 电梯改造税率
  • 增值税多缴税款可以抵缴以后
  • 虚开发票要如何处理?
  • 净利润为负数还计提盈余公积吗
  • 企业发展基金返还条件
  • 企业一般户怎么查询
  • 差旅费属于其他费用吗
  • 公司车子折旧相差多少
  • 给个人的销售返现合法吗
  • 值得收藏的一元硬币
  • mysql存emoji表情
  • mysql中排序
  • win8.1使用技巧
  • Windows Server 2008网络中禁止迅雷下载
  • freebsd怎么样
  • WIN7系统怎么删除UG其它版本的许可证
  • yosemite 10.10.5升级
  • mac快速操作在哪
  • win8 桌面图标
  • win10正版免费升级
  • 开源镜像下载到本地
  • u深度如何装win7系统
  • 删除系统桌面
  • cocoscreator分包
  • ObjectAnimator Demo
  • python 邻接表
  • node.js javascript
  • css怎么控制图片位置
  • nodejs使用视频教程
  • js设置密码长度
  • 微信内置浏览器怎么清除缓存
  • js的实现原理
  • jquery操作
  • python的web框架
  • python dj
  • jquery的validate前端表单验证
  • pageoffice控件安装不上
  • 仓储用地和物流用地划分
  • 如何加强木材加工质量
  • 购买税控盘的发票需要交印花税吗?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设