位置: 编程技术 - 正文

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

  • 律师事务所个人所得税如何计算
  • 消费税基本特点?
  • 土地增值税计税依据
  • 固定增长定价模型
  • 新征用的耕地是什么意思
  • 公司过账什么意思
  • 工会经费滞纳金是多少
  • 需要月报的税收项目
  • 年终奖可以分几次发吗?
  • 个体户个人所得税税率表2023计算
  • 企业哪些可以抵扣增值税
  • 中药饮片的税率现在是多少
  • 企业转让无形资产要交增值税吗
  • 进项税和销项税抵扣的会计分录
  • 进项税转出余额方向在哪一方
  • 没有营业执照哪个银行可以办理房产抵押贷款
  • linux和windows的区别和联系
  • 关于工程材料的图书有哪些
  • 其他业务收入对方科目
  • 已认证进项税发票可抵扣么
  • 税务申报逾期罚款不交
  • 简述项目融资风险的内容
  • nvm安装及全局配置node
  • 长春花怎么养才能爆花
  • 联营企业分得的利润应计入
  • 外贸企业申报出口退税的期限
  • 企业发放年终奖政府有哪些规定?
  • 厂房押金不退怎么要回来
  • 涉及产权的案例
  • 企业合并支付的资产评估费计入
  • yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
  • 会计开税票的表格范本
  • thinkphp5框架介绍
  • 固定资产减少的账务处理
  • 机票报销需要哪些才可以
  • 瑞吉外卖项目简历
  • php封装app打包
  • phpcms怎么用
  • 长投转可供
  • 进口关税和增值税怎么做账
  • 个人账户收到多少钱会被监控
  • 同控下的企业合并分录
  • 环评费用如何进项抵扣
  • 跨月凭证怎么冲销
  • 个人所得税要计入管理费用吗
  • 医院药品进销差价会计核算
  • 递延资产放在资产负债表哪里
  • 4s店收到红字发票怎么开
  • 库存商品用于投资
  • 利息支出可以抵扣进项吗
  • 报关单位分为几种类型?其业务范围有何不同?
  • mysql中函数创建与调用示例
  • xp复制粘贴功能失效
  • phpstudy中phpmyadmin无法访问
  • windows server 2008 u盘安装
  • mac如何通过终端启动
  • linux lftp命令
  • centos调出命令行
  • Win10 Mobile 10549预览版增DPI缩放 瞬间手机变电脑
  • 手把手教你安装使用国家反诈中心
  • 如何彻底删除超级QQ秀
  • fdisk硬盘分区工具
  • linux 卸载 mysql
  • js字符串includes
  • win sc
  • unity shader cull off
  • 什么是馥芮白
  • shell 方法调用
  • .bat文件如何编写
  • unity自动生成
  • jquery登录注册源代码
  • 安卓环境搭建id怎么设置
  • 咪咕游戏包括什么
  • python dict 转 list
  • 善意取得的条件和效力
  • 离线开票金额为0
  • 增值税普通发票有什么用
  • 福建网上税务局app
  • 上海嘉定南翔房子
  • 公寓限购是好事吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设