位置: 编程技术 - 正文

实例讲解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框架中文手册)

  • 个人注册电子税务局
  • 减免税额和免税额一样吗
  • 中级考试报了三门,只考两门行吗
  • 计提增值税及附加税费怎么算
  • 审计的基本流程是什么
  • 减税后含税单价计算公式
  • 个税专项扣除中途贷款改租房
  • 单位部分承担个人借款利息个税的计算
  • 公司回购房产契税谁交
  • 汽车销售公司办公室周末上班吗知乎
  • 简易计税项目的分包款为建筑服务劳务费,可以扣除吗
  • 进口关税退税计入什么科目
  • 应付账款预收账款
  • 客户给现金
  • 发票联给错怎么办?
  • 分公司注销总公司会计分录
  • 小企业会计准则和企业会计准则的区别
  • 企业收到党建经费 所得税
  • 没有税率的发票怎么开
  • 持续经营净利润和扣非净利润
  • 1697508991
  • 高新技术企业研发人员学历要求
  • 技术服务的大类包括
  • 以土地使用权投资入股的土地增值税
  • G40/50-70、SR1000随机Linux改安装Win7系统的实现方法
  • 营业外支出包括哪些科目
  • PHP:pg_field_num()的用法_PostgreSQL函数
  • 持有至到期投资在资产负债表怎么填
  • 工程施工暂估的成本的依据
  • win10 打开远程连接
  • 拍卖有抵押的车子怎么处理
  • 192.168.2.1 路
  • 房地产取得土地怎么做账
  • 非居民纳税人可以做汇算清缴吗
  • node.js in action
  • 应交税金及附加包括哪些
  • iframe之间通信
  • 增值税专用发票的税率是多少啊
  • 一般纳税人购进小规模纳税人的货物
  • 残保金补申报后处罚会自动取消吗
  • 公司捐款怎样抵扣
  • 上一年的运费发票怎么开
  • 研发费用计入营业利润吗
  • 资产负债表有投资成本吗
  • 交通运输增值税专票
  • 公司注销其他应付款有余额有影响吗
  • 技术服务费该怎么收
  • 异地车辆登记证书怎么补办
  • 进项税额是怎么算的
  • 年底没有取得发票企业所得税
  • 结转本年利润的摘要怎么写
  • 城投公司代表政府出资签订招商引资协议
  • 购买东西进项税额怎么算
  • 存根联明细怎么申报
  • 售后回租含手续费吗
  • 企业买车计入什么科目
  • 公司买车车辆购置税怎么交钱
  • 开票软件升级包
  • 资本金与注册资本的关系
  • 填制凭证出现的问题
  • 红字冲销发票的作用
  • windows2003r2安装教程
  • autorun.inf在win10
  • kill强制结束进程的参数
  • softmangerlite.exe是什么进程 有什么用
  • win10系统应用
  • 平板电脑安装的是什么格式的软件
  • perl chr
  • unity3d入门视频教程
  • unity做安卓app
  • 查找最近文件操作记录
  • python中flask模块
  • python import os
  • javascript学习指南
  • python发邮件代码
  • android知识点大全
  • apple开发
  • 贵州网上办税服务厅登录
  • 蜀山区税务局工资待遇
  • 国税地税数据共多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设