位置: 编程技术 - 正文

实例讲解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万以下减半
  • 所得税收入减免政策
  • 私募股权基金税收主要涉及的是什么税收问题
  • 资产预测怎么写
  • win11开机蓝屏怎么解决
  • 电脑游戏没法玩怎么办
  • 股票退市怎样补仓
  • 什么是资产减值准备计提
  • 资产负债表日后至财务报告批准报出日之间
  • 4芯网线插线顺序图
  • 捐赠固定资产入账价值
  • 带息应收票据计息时
  • win7旗舰版系统激活工具
  • i33240配什么主板
  • 真三国在哪下载
  • 网赚项目——Youtube获取高流量的技巧
  • codeigniter 教程
  • 外购产品视同自产产品办理免抵退税的条件有哪几种
  • 简述gnss数据处理流程
  • 当年实现的利润弥补以前年度亏损还是提盈余公积
  • framework3.5启用
  • chrome os安装到u盘
  • 前端种类
  • 云服务器 chia
  • openfoam中文教程
  • 企业销售固定资产房屋都要交什么税
  • uni-app入门到实战 以项目为导向
  • 稽查增值税跨年了销项税额如何转出
  • 费用类和成本类有哪些
  • 国有资产无偿划转的会计处理
  • python多线程编程案例
  • sql自定义
  • 筹建期间发生的借款利息
  • 背书的银行承兑汇票怎么做账
  • 公司法人必须在公司名下缴纳社保吗
  • 转让旧固定资产可以开专票吗
  • 应收业务处理流程
  • 企业逾期贷款利息影响征信吗
  • 分公司和总公司在一个地方
  • 营改增政策解答
  • 合伙企业是如何成立的
  • 营改增问题解答
  • sql server的相关技术知识
  • 如何查看连接网络的密码
  • SQL server不存在或拒绝访问 u8
  • u盘怎么装win7系统步骤
  • win10预览版和正式版区别
  • vista server
  • mac自带系统检测软件怎么用
  • mac 无线网
  • centos7.6桌面版安装教程
  • win8 怎么样
  • linux系列
  • win10系统自带功能
  • nodejs获取客户端ip地址
  • 批处理操作
  • js查看浏览器信息
  • linux什么是二进制文件
  • nodejs实战教程
  • 浅谈插入排序算法在Python程序中的实现及简单改进
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设