位置: 编程技术 - 正文

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

  • 承兑汇票用开发票吗
  • 金税盘维护费应该计入什么科目
  • 购买产品再出售怎么入账
  • 小金额收据入账后需要汇算清缴吗
  • 农产品一般纳税人开普票免税吗
  • 无形资产的出售的会计处理
  • 税控盘反写显没有数据怎么处理
  • 小规模纳税人可以开1%的专票吗
  • 搭赠的商品怎么开票
  • 城市维护建设税怎么做分录
  • 财政科技经费专项拨款的会计处理
  • 非居民企业投资收益
  • 股权转让资产怎么清算
  • 当月冲销的作废发票怎么账务处理?
  • 收到赔偿怎么做账
  • 补充医疗保险 个人账户可以报销吗
  • 事业单位过节发东西
  • 新会计准则要求
  • 开给别的公司的支票可以转给其它人去抵账?
  • 小规模纳税人网上申报税务操作流程
  • 保安服务费差额征税如何计算税额
  • 专用设备抵免企业所得税目录
  • 广告公司税收分析
  • 增值税发票税率是星号
  • 用于集体福利的进项税额转出
  • 年底进项税和销项税怎么记
  • 同一控制下企业合并入账价值
  • 尚未开发的土地使用权摊销
  • 卷烟消费税税率表
  • 不动产处置流程
  • 分期付款融资账务处理
  • 发生可抵扣暂时性差异是调增还是调减
  • 软件产品合同
  • 招待费进项税能抵扣嘛
  • 如何免费获取Win11企业版
  • 如何让游戏速度加快
  • 关闭windows安全中心拦截
  • 银行代扣的年费怎么退
  • 分公司收到总公司拨款怎么做分录
  • win10开机强制进入高级选项怎么退出
  • 修改linux启动项
  • 消耗性生物资产减值准备一经计提不得转回
  • 员工宿舍的物业费要交个税吗
  • 绿萝怎么修剪才能更旺盛
  • 计提坏账准备对所得税费用的影响
  • 增值税返还政策
  • PHP:mcrypt_get_cipher_name()的用法_Mcrypt函数
  • 冰山从哪里来
  • 盈余公积金可以用来扩大公司生产经营
  • 投喂小鸟
  • 跨的基本功有哪些
  • 外贸公司主要是做什么产品
  • phpcms模板下载
  • 电话订票起售时间
  • 增值税为什么不能在税前扣除
  • mongodb 安装
  • sql for in
  • 增值税发票抵扣联丢失怎么办
  • 亏损企业研发费用必须加计扣除吗
  • 一般纳税人已交税金账务处理
  • 材料的采购成本包括
  • 有限合伙企业需要缴纳企业所得税吗
  • 将本月应交未交增值税转入未交增值税
  • 冲销以前年度主营业务成本
  • 资本公积金什么时候提取
  • 企业增资还需要增资账户么
  • mysql优化sql有哪些
  • drop,truncate与delete的区别
  • xp系统如何清除所有盘的东西
  • mac怎么删除系统软件
  • w7系统怎么添加打印机
  • mac系统怎么创建用户
  • linux的文件结构
  • cocos2dx入门
  • Unity3d_NGUI和UGUI的学习
  • jsp手机号验证
  • 如何在同一台电脑上投屏
  • 海关编码更新
  • 税收分类分级管理后如何开展风险管理
  • 国税发2014年39号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设