位置: 编程技术 - 正文

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

  • 农产品的税率是9%吗
  • 员工过生日计入什么科目
  • 预期报酬率和期望报酬率一样吗
  • 差旅费计入工资成本吗
  • 进项税额记哪方
  • 员工充值饭卡的收入如何做账
  • 房地产企业预收账款结转收入
  • 所得税滞纳金怎么做账
  • 捐赠和赞助业务的税务处理怎么做?
  • 公司收的保证金可以打入私人账户吗
  • 仓库常用包材
  • 企业招待客户的费用
  • 事业单位开办费账务处理
  • 12月份的收入1月份开具发票,报税时免税吗
  • 防洪费怎么申报
  • 工业企业购买电机会计分录
  • 员工拓展培训进度怎么写
  • 非货币性资产交换损益计算
  • 税控技术服务费计入什么科目
  • 企业所得税怎么做
  • 房地产开发企业应交税费科目
  • 其他应付款可以用其他应收款代替吗
  • 非全日制员工个税扣除标准
  • 公司入职员工
  • 交通费进项税抵扣计算
  • 建筑工地伙食费会计分录
  • 企业收到政府补助需要开发票吗
  • windows11怎么显示我的电脑
  • 虚拟机中怎么安装ubuntu
  • 公司撤股后还要担责任吗
  • 未到期的应收票据向银行贴现什么时候计入短期贷款
  • 原材料和固定资产入账价值的计算
  • 未取得发票入账违反什么规定
  • 金钱树的养殖方法 盆栽
  • 其他业务收入产品包括
  • php option
  • laravel url重写
  • 利润分配怎样做分录
  • 开源项目排行榜
  • 微信小程序下拉菜单怎么做
  • string对象放在哪里
  • 增值税专用发票和普通发票的区别
  • 减资资产负债表怎么填
  • 小规模所得税申报表利润总额是填季报吗
  • 费用科目在贷方表示
  • 品牌代理费计入什么费用
  • u8存货核算对方科目怎么设置
  • 经营活动现金流为正说明什么
  • 个人所得税年底退税 可以退多少
  • 收据入帐
  • 完全删除sql server2012
  • 三票合一的发票什么意思
  • 附加税减半征收政策是哪个文件
  • 计提费用账务处理
  • 小规模企业缴纳公积金怎么做账
  • 给个体工商户付款可以打到法人卡上吗
  • 单位委托单位
  • sql平均数函数
  • xp字体无法安装
  • win8旗舰版和专业版区别
  • Win10中文输入法不能用
  • WIN10怎么设置在平板模式下隐
  • xp系统如何设置默认软件
  • regsync.exe - regsync是什么进程 有什么用
  • windows 8 build
  • linux命令csdn
  • jquery 插件写法
  • js canvas绘制图片
  • shell脚本函数及传参
  • 关于echo的名字
  • 利用职务之便谋取私利是什么罪
  • shell中的注释用什么表示
  • python中的字符串可变吗
  • python相关图片
  • python按行写入txt
  • unity 3d游戏开发(第2版)
  • apple开发
  • 广东税务怎么查社保缴费明细
  • 如何挑选烟叶等级
  • 个体工商户自己开普票流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设