位置: 编程技术 - 正文

实例讲解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
  • 红冲上个月发票
  • 子公司分红母公司要不要交税
  • 收到预付款的发票怎么写摘要
  • 先付款后开票是预付吗
  • 待报解预算收入计入什么科目
  • 个体户雇佣临时工
  • 个人转让房产涉税政策
  • 退休工资要缴纳税吗
  • 资产负债表长期借款包括哪些
  • 生产型企业付的消防年检费记什么科目
  • 润滑油消费税征税环节
  • 运输公司结转成本
  • 公司多久不做账会被注销?
  • 研发部门属于哪个会计科目
  • 土地使用税级别划分标准
  • 三万以下免税如何开票
  • 住宿业的配套服务有哪些
  • 税务实名认证怎么认证
  • 营运资金的范畴包括哪些
  • 房屋修缮发票能补开吗
  • 承兑汇票漏章证明怎么写?
  • 特殊金融机构有哪些
  • 水电费计提和冲销
  • 增值税各科目账务处理
  • 小规模企业国税怎么报税
  • 微软输入法打不出汉字
  • Mac笔记本电脑截图
  • 以产品对外投资需要进项税额转出吗
  • linux中添加用户和组的操作
  • 教程图怎么做
  • 组策略阻止了这个程序0x800704ec
  • 经营性流动负债计算公式
  • 主营业务收入明细账
  • 金税盘服务费怎么申报抵扣
  • 收到员工违章操作罚款的会计分录
  • msworks.exe - msworks是什么进程 有什么用
  • 土地使用税若干问题的补充规定
  • 库存盘点差异会计分录
  • 工商注册经营部和公司的区别
  • Yii2——使用数据库操作汇总(增删查改、事务)
  • 非限定性净资产包括哪些科目
  • 暂估入库成本需要冲销吗
  • 账面成本与账面余额
  • 企业购买商品房作为职工宿舍
  • 购进原材料如何结转成本
  • 非税收入定额票据是什么
  • 租房开的发票收的税如何做账?
  • 税控盘减免税款需要结转吗
  • MySQL中KEY、PRIMARY KEY、UNIQUE KEY、INDEX 的区别
  • 扩展什么
  • win7系统如何打开
  • windows如何安装安卓软件
  • win7开机提示由于启动计算机时出现页面文件
  • ubuntu如何安装
  • ubuntu15.10中文版
  • win10网络身份验证失败
  • ubuntu设置默认编辑器
  • centos7添加ip地址
  • kpg是什么文件
  • win8系统打不开exe
  • cocos引擎教程
  • Unity3D 事件
  • js中的函数
  • js拖拽div
  • 在shell脚本中$用于
  • 添加ie
  • jq获取url
  • 批处理转义字符如何
  • python class类型
  • javascript含义
  • unity3d如何发布ios教程
  • 欢欢长大了的童年
  • javascript例题
  • 税务网上申报怎样操作
  • 国家税务总局两江新区税务局
  • 贵州税务开票系统登录
  • 四川省地方税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设