位置: 编程技术 - 正文

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

  • 在建工程贷款利息分录
  • 小规模纳税人季度不超30万免增值税
  • 房地产开发商需要缴纳什么税
  • 出口未开票怎么会计处理
  • 递延收益怎么交企业所得税
  • 一般纳税人要做价税分离吗
  • 企业购买房产每年需要交什么税
  • 公司销售家电并购案例
  • 增值税专票怎么抵扣
  • 应收债权属于非抵押吗
  • 取得的技术酬金怎么入账
  • 企业银行余额
  • 外请人员所发生的费用怎么做账
  • 私车公用产生的过路费怎么开发票
  • 办公用品报销项目怎么写
  • 银行定期存款利率计算
  • 资质挂靠人员需要交个税吗?
  • 企业股权转让有什么好处
  • 金税三期的内容
  • 二手房增值税怎么收取
  • 汇算清缴时资产总额如何计算
  • 现金流量表编制依据和方法
  • 小规模纳税人租金收入增值税税率
  • 退回来的税怎么做账务处理
  • 个体工商户生产经营所得税税率表2021
  • 增值纳税人类别怎么选
  • 小规模税局代增值税专用发票怎么交税
  • 企业减免企业所得税怎么算
  • 公司贷款收入如何计算
  • 收到一张餐饮费发票怎么入账
  • 软件服务费怎么算
  • php介绍
  • 劳务费要申报个税吗怎么申报
  • php数组函数输出《咏雪》里有多少"片"字
  • 企业设立的条件有哪些
  • 公司注销做账
  • dsm是什么文件
  • 车辆购买保险发票未回怎么做会计分录
  • html visit
  • 详解php字符串替换
  • 购进食用油的会计分录
  • 收到进项发票当月能抵扣吗
  • 前端开发常用技术
  • python编程100例
  • 一文搞懂兰州简史
  • 怎么搭建本地ota
  • 微信利用php创建文件
  • 逆回购要手续费吗
  • phpcms v9官网
  • 固定资产一次性扣除政策2023
  • 购买茶叶怎么入账
  • 财务费用相关指标
  • 增值税发票红冲的相关规定
  • 给客户的客户开普票算不算虚开
  • 企业现金规模的影响因素
  • 垃圾处理费如何做账
  • 预付账款收到发票
  • 客户付款是借方还是贷方
  • 资金结存余额在借方还是贷方
  • mysql数据查询慢
  • win8.1电脑设置在哪里
  • xp系统浏览器收藏夹文件位置
  • win2003服务器管理
  • win7 管理
  • mac显示隐藏文件夹
  • 搭建技巧和方法示意图
  • centos搭建lamp环境
  • Ubuntu操作系统安装步骤
  • 彻底禁止win11自动更新
  • pdf在电脑上打开
  • 让一切停留在最美好的时光
  • Unity3D游戏开发标准教程
  • python获取数据包
  • bash: /usr/bin/autocrorder: /usr/bin/python^M: bad interpreter: No such file or directory
  • jquery实现网页全屏
  • 河南的省直
  • 地方税务局部门有哪些
  • 亿企赢工作前景怎么样
  • 深圳12366接听客服工作怎么样
  • 开票软件登录失败怎么办
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设