位置: 编程技术 - 正文

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

  • 当期所得税费用可以是负数吗
  • 出口免税收入的计税依据
  • 企业一般户需要哪些资料
  • 老项目增值税简易计税
  • 运输开票的税点是多少
  • 计提税金及附加会计分录
  • 企业关于发票的管理及要求
  • 坏账核销抵税
  • 新增资产额怎么计算
  • 固定资产一次性折旧的账务处理和税务处理
  • 高新技术企业发展现状
  • 支票报销是怎么操作的
  • 增值税即征即退政策适用范围
  • 个税专项扣除需要提供哪些依据
  • 待认证转进项税额转出会计分录
  • 法院判罚利息怎么算
  • 税收优惠退回的税金怎么入账
  • 受托方的计税价格是什么意思
  • 话费发票入账
  • 进口增值税关税怎么付
  • 收到去年所得税汇算清缴退税账务处理
  • 开了红字发票印花税怎么处理?
  • 公司开发票就会报税吗?
  • 增值税税率改革的意义
  • 钻井采用的主要设备
  • 质量扣款入账
  • 劳务报酬必须要和工资申报吗
  • 隐藏资源管理器窗口
  • 进项发票认证操作
  • 有关应付债券的法律规定
  • 应收账款怎么做会计分录
  • h5能不能自动播放
  • 股权激励费用摊销计算
  • ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
  • 企业新产品销售收入数据
  • 资产减值损失和存货跌价准备有什么区别
  • 简单聊聊太平天国
  • java幂等性是什么
  • push添加对象
  • 工会经费的使用范围有哪些
  • 员工工资计提
  • day11-Servlet01
  • css设置旋转动画
  • centos 安装dpkg
  • mongodb部署安装
  • 原始凭证的种类划分
  • 增值税药品发票明细
  • 对公账户转私人账户
  • 医生规培补助
  • 员工报销工伤险怎么报销
  • 合并报表时抵消内部交易包含的未实现损益的影响包括
  • 工程材料票抵扣比例
  • 产权转移书据印花税减免政策
  • 银行销户余额怎么查
  • 专票和普票的区别税点差多少
  • 公司购入二手车没有发票怎么入账
  • 机票抵扣怎么填申报表
  • 盈余公积的会计处理
  • python的底层语言
  • sql语句示例
  • centos 拷贝
  • ubuntu x
  • win8系统桌面图标
  • centos7 ifcfg-lo
  • Win10 64位系统下火狐浏览器打开带flash网页卡死的解决方法
  • windows7禁止开机启动
  • jquery邮箱正则表达式
  • python金融大数据 全流程详解
  • 代码sd是什么意思
  • jquery怎么禁用按钮
  • 批处理命令教程
  • bat删除隐藏文件
  • 仿百度首页
  • 解决的英文
  • jquery audio
  • 广东省国税局长是谁
  • 外经证怎么核验
  • 地税局电话咨询电话
  • 技术转让条件
  • 青海税务app
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设