位置: 编程技术 - 正文

实例讲解YII2中多表关联的使用方法

发布时间:2024-01-10

推荐整理分享实例讲解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框架中文手册)

  • 2021年9月个税申报截止时间
  • 销售费用福利费编码
  • 自产自销农产品发票如何开具
  • 无形资产研发费用加计扣除是晢时差异吗
  • 出口货物退运管理办法
  • 结转无形资产账面价值
  • 购车 买车
  • 计提水利建设基金的依据
  • 关于转让费的问题
  • 福利费不交个人所得税会怎么样
  • 个人取得下列各项所得须自行申报纳税的有
  • 小规模纳税人增值税减免
  • 运费营改增时间
  • 增值税电子发票没有发票专用章
  • 视同内销发票重开要带税吗
  • 带息的应付票据计算的利息计入财务费用
  • 外账进销存单据是怎么弄的?
  • mac如何登陆两个微信
  • 一个网页账号在多个电脑登录
  • 会计分录的正确书写格式图片
  • windows 11怎么用
  • 增值税即征即退2023政策
  • php代码封装成dll
  • u深度u盘启动盘制作工具官网
  • win10蓝牙怎么开ldac
  • 来料加工报废产品合同
  • PHP:base64_decode()的用法_url函数
  • 股东已转让股权还可以追究出资吗
  • 安装prophet
  • 白鹤芋的养殖方法和注意事项
  • smart图形怎么单独设置动画
  • phpfilter
  • 君子兰的养殖方法
  • php实现购物车功能的方法
  • php开发过程遇到的难题
  • 发票开错抬头怎么进行税务处理?
  • 只有收据没有发票怎么报销
  • php登录注册
  • 不得抵扣的增值税怎么处理
  • bootstrap easyui结合
  • typescript中文
  • springboot ci
  • 说好的运费少给怎么办
  • 预缴增值税怎么算
  • 活动委托书范本
  • 微信收款怎么记录怎么删除
  • 查补收入是否享受免税政策
  • 应交税费月末怎么结转分录
  • dedecms51
  • sqlserver 死锁查询
  • 免税企业免征增值税条件
  • 出票后定期付款的汇票,其提示付款的期限为
  • 保险理赔进项税额转出
  • 长期股权投资与其他权益工具投资的区别
  • 经营范围中没有这个项目开票后果
  • 确认收入未开发票
  • 二手车公司销售二手车增值税怎么算
  • 房屋租赁违约金怎么规定
  • 库存商品结转成本需要附件吗
  • 税务销售滞后是什么意思
  • 售后回租含手续费吗
  • 物流行业会计核算特征有哪些
  • sqlserver批量执行sql脚本
  • win7系统怎么打开开机启动项
  • 进程lsass.exe
  • 苹果发布会亮点速览
  • windows7搭建ftp
  • linux ping命令的用法
  • win10关闭metro界面
  • shell脚本中计算变量除法
  • 物理引擎演示
  • css回到页面顶部
  • unity fixed update
  • js基于什么
  • javascript用处
  • python怎么编写二维码
  • 附加税申报表样本
  • 如何在广东省电子税务局开发票
  • 实名办税的法律依据
  • 宁波个人税务查询网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号