位置: 编程技术 - 正文

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

  • 申报个税后发生扣工资
  • 小规模免缴增值税吗
  • 农产品收购发票使用范围
  • 企业所得税的账户设置
  • 股东会的特别决议事项包括
  • 公账转法人私账的注意事项
  • 汽车租赁企业
  • 商贸公司营业执照范围
  • 报关单上消费使用单位可以交税么
  • 转入公司对公账户怎么办
  • 扫微信送礼品是诈骗吗
  • 增值税怎样报税
  • 个人境外存款利息收入收税
  • 如何申报加计抵减
  • 进项税当月申报怎么申报
  • 当期留抵税额怎么计算
  • 购进货物取得
  • 固定资产已折旧完报废如何处理
  • 商贸企业可以使用月末一次加权平均
  • 交上月增值税的凭证
  • 买卖投资证券基金怎么进行财税处理?
  • 财务软件操作指南
  • 个体工商户是否属于法人
  • 怎么核算租赁合同的印花税?
  • 个人开发票给公司需要提交哪些资料
  • 需要自己到税务局自行申报个人所得税的纳税人有哪些?
  • 远期外汇合约套期会计分录
  • 或有事项确认资金怎么填
  • 如何解决win10系统复制文件速度
  • 不良资产购买流程
  • 企业计提房产税的会计处理正确的是
  • 购入嵌入式软件能一次性扣除吗
  • linux字体不清晰
  • 增值税的计税依据包括关税吗
  • 路由器wds桥接成功为什么不能上网
  • 最快的XQD存储卡是什么
  • php获取文件内容的函数
  • php读取文件
  • 小程序和公众号可以同名吗
  • vue请求后端接口
  • 违约赔偿金要交税吗
  • 长期待摊费用的摊销分录
  • phpcms v9 getshell
  • 领取营业执照后超过30天
  • 税控盘使用费
  • 承兑汇票私人贴息双方都违法吗
  • 更正申报季度企业所得税
  • 过了汇算清缴还能调整以前年度
  • 银行利息怎么算10万块三年多少利息
  • 银行开户费属于现金流量表的哪一类
  • 小规模纳税人免税会计分录
  • 商品流通企业税费按征收对象可分为
  • 简易征收应纳税额
  • 京东预付是什么意思
  • 当月扣缴社保分录
  • 普通发票作废的保存几年合理
  • 旅游费的发票可以进成本吗?
  • 工程施工间接费用明细
  • 设备丢失查找
  • 固定资产清理后怎么做账
  • sqlserver代理无法启动怎样办
  • mysql闪退处理
  • win7玩游戏出现安全警报
  • Windows Server 2008添加Hyper-V组件
  • centos进入
  • fedora linux安装教程
  • win10双击打开文件设置方法
  • win7系统连不了蓝牙
  • 使用Jasmine和Karma对AngularJS页面程序进行测试
  • 动态创建菜单
  • js实现apply函数
  • jquery 右键菜单
  • ubuntu如何下载
  • 基于javascript的毕业设计选题
  • perl vs python
  • javascript运用
  • 广东电子税务局手机版
  • 网上预约挂号能退吗
  • 租赁发票交多少税费
  • 车辆购置税交了怎么查询不到
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设