位置: 编程技术 - 正文

Yii2中hasOne、hasMany及多对多关联查询的用法详解

编辑:rootadmin

推荐整理分享Yii2中hasOne、hasMany及多对多关联查询的用法详解,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

hasOne、hasMany是Yii2特有的用于多表关联查询的函数,平时在使用多表关联查询的时候建议使用它们。为什么?因为这种方式关联查询出来的结果会保留Yii2自有的表头排序功能,以及CheckboxColumn中input的id存值,至于还有没有其它的好处就需要大家去挖掘了,笔者目前就发现了这两个常用的好处。其他的关联查询,像yiidbQuery查询或者原生的SQL语句查询都没有,查询出来在列表展示的时候,表头一排黑。

Yii2的hasOne、hasMany多表关联查询,不管是文档还是文章其实都可以轻而易举的找到参考母本,但是笔者为什么还要写这篇文章呢,想法其实也很简单,因为在前面的信息中我没有看到多对多关联查询的用法,不重复别人,也重复自己,本文的重点就讲多对多关联查询的用法,让你涨涨知识。

需求分析

1、使用一条查询语句就能把列表的数据全部展现出来,列表包含一对一,一对多,以及多对多的关系。

2、不能破坏Yii2自有的表头排序功能,以及CheckboxColumn中input的id存值。

效果图

1、一对一,一对多,多对多,表头排序。

2、CheckboxColumn中input的id值。

代码分析

多对多

Yii2中hasOne、hasMany及多对多关联查询的用法详解

例子:一个客户可以有多个标签,一个标签可以对多个客户。

1、在TSales(客户表的 model)里加入如下代码:

注释:这里common_tag表为中间表,common_tag中间表用hasMany与客户表关联之后要在后面加上joinWith(['tag'])关联标签表。onCondition为附加条件的方法。

2、在CommonTag(中间表 model)里加入如下代码关联标签表,用hasOne就行。

3、在TSalesSearch(客户的Search model) 里加入如下代码关联common_tag中间表: $query->joinWith(['common_tag']);

4、页面输出代码如下:

注释:$model->getRelatedRecords() 是用于获取[_related:yiidbBaseActiveRecord:private]数组的值。

一对多

1、在前面的多对多用法中涉及到的hasMany就属于一对多的用法,要实现一对多的话就把后面的joinWith去掉就可以了,其它配置以及输出方式都一样。

一对一

1、一对一的用法前面也涉及了,hasOne就属于一对一的用法,配置和hasMany一样,这里就不详述了。

注意事项

1、当关联查询出来的值使用如下代码输出(common_tag.name)获取不到值的时候,那就应该是你的客户表存在这个name字段,并且这个值为空,重名了之后就会优先输出主表的字段,解决办法用:$model->getRelatedRecords()获取。

以上所述是小编给大家介绍的Yii2中hasOne、hasMany及多对多关联查询的用法详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对积木网网站的支持!

Yii2 hasOne(), hasMany() 实现三表关联的方法(两种) 背景:现有group(组)和user(用户)两种实例。一个group中可以拥有多个user,一个user也可以属于有多个group(多对多关系)GroupUserRelation表用于绑定组合组

使用PHPMailer发送邮件实例 本文实例为大家分享了PHPMailer发送邮件的具体代码,供大家参考,具体内容如下PHPMailer类源代码下载地址:

Yii2实现UploadedFile上传文件示例 闲来无事,整理了一下自己写的文件上传类。通过UploadFile::getInstance($model,$attribute);UploadFile::getInstances($model,$attribute);UploadFile::getInstanceByName($name);UploadFile

标签: Yii2中hasOne、hasMany及多对多关联查询的用法详解

本文链接地址:https://www.jiuchutong.com/biancheng/295600.html 转载请保留说明!

上一篇:Yii2中多表关联查询hasOne hasMany的方法(多表关联join)

下一篇:Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)

  • 非营利组织营利了怎么办
  • 贷款其他消费是指什么
  • 减免附加税怎么填报
  • 小企业会计准则和企业会计准则的区别
  • 政府购买服务合同最多签几年
  • 辅导期一般纳税人什么意思
  • 用友u8如何结转期间损益
  • 仓库常用包材
  • 商品销售赠送部分要交税吗
  • 承包租赁成本明细表的预算项目
  • 私车公用保险费用公司承担吗
  • 会计累计折旧属于什么科目
  • 国税地税企业所得税划分
  • 财税()
  • 增值税简易征收一览表
  • 房地产预售阶段增值税进项
  • 1697510490
  • 库存商品适用于什么账簿
  • 长期股权投资核算的成本法与权益法的主要差别有哪些
  • 个人出租住房需要交城镇土地使用税吗
  • 公司租赁个人车辆需要哪些手续
  • 如何卸载某些系统软件
  • 经营资产和金融资产有哪些
  • 主管会计的具体工作
  • 私立幼儿园收费归哪个部门管
  • php扩展编写
  • mc office是什么意思
  • 阐述python中浅复制与深复制
  • PHP:diskfreespace()的用法_Filesystem函数
  • 餐饮行业采购
  • 大西洋跟太平洋有没有融为一体?
  • 月初在产品成本+本月生产费用
  • 连接云服务器超时
  • vue+java+mysql
  • 差旅费车票抵扣的相关规定
  • 城建税减征50%
  • web用户管理系统报告
  • 外国人在中国工作签证
  • java中public修饰什么
  • 合作卖东西怎么分成
  • 现金发放工资会计科目怎么写
  • 往期企业所得税报表更正
  • 小规模超过30万怎么交增值税
  • 职工教育经费可以冲回吗
  • 开劳务发票需要的资料是?
  • 收到现金长时间不付款
  • 建筑公司支付给农民工的工资需要取得发票吗
  • 检测公司成本科目
  • 土地无形资产摊销的会计处理方法
  • 知识产权服务费可以计入研发费用吗
  • 建筑图纸设计费多少钱
  • 工会经费计提比例0.8%
  • 购买原材料材料尚未验收入库,款项尚未支付
  • 编制合并财务报表的依据是纳入合并
  • 出口转内销账务处理以前年度
  • 简单介绍清明上河图
  • sqlserver多表查询 索引
  • mysql数据库远程备份和恢复
  • CentOS上使用Squid+Stunnel搭建代理服务器教程
  • 网络硬盘在哪
  • linux忘记root密码怎么修改
  • webcolct.exe - webcolct 是什么进程
  • macbook如何安装windows
  • 物联网1.0 2.0 3.0
  • Windows RT 8.1 Update 3九月发布 届时将加入改进版锁屏
  • win10系统wifi信号断断续续
  • 在linux系统中,用来存在系统所需
  • win8开始菜单全屏怎么调回去
  • node.js实战
  • 置顶通知要开启吗
  • cocos2dx-3.0(23) ScrollView 缩放 及 touch新用法
  • cocos2d开发的知名游戏
  • cocos2dx ui编辑器
  • docker save -o
  • python executemany的使用及注意事项
  • javascript第二章上机怎么写
  • 安卓开源好处
  • 重庆电子税务局网页版登录
  • 小规模纳税人土地使用税减免政策
  • 季度申报忘了报怎么办
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设