位置: 编程技术 - 正文

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

  • 纳税人识别号在哪里能查到
  • 普票不能抵扣要坐在帐里吗
  • 企业所得税应补退税额怎么计算
  • 不认证的发票可以抵扣吗
  • 企业工程款发票税率是多少2021
  • 费用分割单模板
  • 印花税是不是必须要交
  • 营业外收入怎么结转到本年利润
  • 金税设备中有上税吗
  • 民营企业的待遇
  • 车辆的鉴定评估方法
  • 长期股权投资如何审计
  • 房地产成本核算会计分录
  • 银行理财产品赎回
  • 计提资产减值准备是利好还是利空?
  • 子公司打钱给母公司
  • 建筑公司收到工程服务发票怎么做会计分录
  • 被辞退还有退休金吗
  • 小规模纳税人减免增值税会计处理
  • 租金小规模开票税率
  • 浅谈收入与成本的关系
  • 购买粽子开的餐饮发票
  • 贷款利息收到发票怎么办
  • 营改增的销售额规定
  • 母公司开票给子公司有什么税务风险吗
  • 应付工资和实付工资的差额叫什么
  • 建筑工地伙食费会计分录
  • 工资薪金支出账载金额小于实际发生额
  • 政府补助不征税条件
  • 基建期增值税如何抵扣
  • 企业筹资付给第三方账户
  • 支付电费的税费怎么算
  • 工资薪金专项扣除项各多少
  • 上网的操作
  • iphone中的照片如何找回
  • php数组有哪几种类型
  • 个税汇算清缴已退税到账,怎么更正
  • 如何在Windows11上下载和安装 Minecraft
  • dgservice.exe是什么文件
  • 自创商誉是否能入账
  • linux做raid命令
  • PHP:session_unset()的用法_Session函数
  • win10组策略编辑器打不开怎么办
  • ctfmon.exe文件在哪
  • php的array_multisort()使用方法介绍
  • 开发产品完工结转
  • 缴纳房产税需要扣除折旧吗
  • 现金流量表相关题目
  • 前端面试题目100及最佳答案
  • 语义分割入门教程
  • win11任务管理器卡死没响应
  • HTML+CSS+JS+Jquery+练手项目+...合集(前端学习必备,持续更新中...)
  • php接收post
  • 旅游业哪些发票需要交税
  • 社保在会计上的分类
  • 工程补偿款开什么发票
  • 公司的日常费用包括哪些
  • 帝国cms如何判断图片有没有被使用
  • 一字节的范围
  • 图文详解塘鲺、鲶鱼的区别介绍
  • 怎么看是不是真发
  • 征地拆迁的费用可以作为资产吗
  • sql server如何操作
  • SQLite Delete详解及实例代码
  • 贸易公司开发票进项跟销项不符合怎么办?
  • 会计中预付账款
  • 正常存货周转率多少次合适
  • 残次品销售计入什么科目
  • 代销货物收取手续费计入
  • 物业服务企业管理
  • window10电池
  • win8.1应用商店无法连接
  • windows的视频
  • 怎么在mac上查找iphone
  • windows隐藏分区
  • windows10不能装windows7
  • js实例教程
  • android资源文件
  • 苏州税务ukey客服电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设