位置: 编程技术 - 正文

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

  • 所得税申报表的营业成本包括费用吗
  • 简易征收办法征税货物销售额
  • 中级会计报名必须用ie浏览器吗
  • 年报的资产负债率在哪里
  • 股东权益是资产吗
  • 企业付房租怎么做会计分录
  • 预收款增值税纳税义务发生时间与确认收入时间
  • 小规模 季度
  • 收到投资款的会计科目
  • 社保基数是按税前工资还是税后工资
  • 预销售符合退款条件的商品记什么分录
  • 债务转为股份的协议
  • 补入库存商品的会计分录
  • 公司收到的其他发票
  • 收到跨境分红的会计处理怎么做?
  • 应付账款借方余额为负数是什么意思
  • 未办预售证,企业取得这笔收入要缴增值税吗?
  • 不抵扣的发票怎么导入做账系统
  • 小规模纳税人财务报表是按季还是按月申报
  • 未达起征点可以开增值税专票吗
  • 未提完折旧的固定资产重新评估后是否还计提折旧
  • 无偿使用房屋
  • 发票的校验码被公章覆盖了怎么办
  • 电子普票开具的最新文件
  • 主营业务净利率和销售净利率一样吗
  • 出口汇兑损益的会计分录
  • 其他应付款包括应付职工薪酬吗
  • 行业协会会费收缴标准
  • linux批量删除
  • 收到预付账款会对企业财务有影响吗
  • 使用与保养
  • autoreg.exe
  • .ico是什么文件
  • js map foreach遍历
  • 年终奖一般发什么奖品
  • 工程竣工决算会计账务处理
  • 现金折扣税务处理shi
  • 北极光的征兆
  • php的ajax
  • 残疾人保障基金减免政策
  • 真实世界人工智能
  • 应收账款的平均余额怎么计算
  • 进口设备退增值税
  • 生产型企业出口退税会计分录
  • wordpress建立数据库错误
  • 条形码费用属于哪个科目
  • Linux常用命令与vim
  • 收据4联
  • 认缴怎么填
  • 车船税和保险在一张发票怎么做账
  • 小企业会计准则适用范围
  • 车辆保险费如何提高
  • 开发成本的会计科目编码
  • 金融企业有啥
  • 业务招待费进项税额转出会计分录
  • 固定资产处置怎么报税
  • 减值损失和减值损失区别
  • 企业租入设备的会计分录怎么写
  • 质量策划什么意思
  • 工程发票可以分两次开吗
  • 对公账户有资金往来必须入账吗
  • 房屋装修支出怎么做账
  • 自产产品与视同自产产品
  • 养老服务机构有住房租赁贷款需求吗
  • 税收分类编码怎么选
  • mysql压缩包安装教程5.7.32
  • sql server用处
  • 数据库的常用语句
  • mysql 5.7.16 winx64安装配置方法图文教程
  • ubuntu基本配置
  • win8如何进行系统还原
  • javascript数据
  • [置顶]马粥街残酷史
  • javascript的dom
  • js实现拖拽元素改编顺序
  • javascript教程 csdn
  • 以下关于android应用程序的目录结构描述中,不正确的是
  • 哈尔滨出租车可以拼车吗
  • 深圳纳税信息查询
  • 广东省国税局局长潘
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设