位置: 编程技术 - 正文

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() 实现三表关联的方法(两种)

  • 小规模企业所得税2023年税收政策
  • 个税扣除方法叫什么
  • 企业所得税计算表
  • 年报零申报的103怎么填
  • 应收账款是开票减去货款吗对吗
  • 小规模公司初期注销流程
  • 个税属于会计中的什么科目
  • 直接支付和授权支付方式的区别与联系
  • 红字发票已抵扣和未抵扣是什么意思
  • 绿化工程账务处理支出
  • 资产评估增值的会计科目
  • 现金不够怎么办
  • 公司账户资金
  • 营改增服务业税率
  • 管理会计的目标包括多选题
  • 城建税漏报怎么办
  • 小规模纳税人废品站卖废品发票开什么项目
  • 借款本金和借款余额
  • 销售净利率怎么求
  • 全盘账会计的工作流程是什么
  • 存商品入成原材料怎么改?
  • win10专业版如何激活
  • 不能抵扣的费用
  • mac桌面的文件夹怎么换到别的地方
  • 已经提完折旧的设备改造
  • php数据库分页是怎么实现的
  • php怎么做网页
  • 建筑行业收到工程款会计分录
  • 进程控制块PCB不包括( )
  • 场租费发票如何开
  • 非货币性资产交换以公允价值为基础进行计量
  • 一个简单的html文档一般且必须包含哪些标签
  • 商品先入库后得发票如何做账
  • 深度学习第一步——Pytorch-Gpu环境配置:Win11/Win10+Cuda10.2+cuDNN8.5.0+Pytorch1.8.0(步步巨细,少走十年弯路)
  • 计提企业税费和缴纳分录怎么做
  • 企业所得税是地税申报还是国税申报
  • 利用php判断文件是否存在
  • 企业所得税利息费用的扣除标准
  • php数学
  • 应付职工薪酬账户期末余额可能是
  • 税务变更了股东工商没变更
  • 生产企业成本会计做账流程
  • 辅助生产车间照明费用计入什么科目
  • 换了公司个人所得税重新计算吗
  • mysql1290报错
  • 出票后定期付款的汇票,其提示付款的期限为
  • 两个日期是否一致
  • 汇算清缴时资产折旧怎么填
  • 以前年度多计提成本怎么处理
  • 商贸企业发出商品怎么确认收入
  • 现金短缺无法查明计入什么科目
  • 总公司与分公司账务处理
  • 购买国家机关证件罪量刑标准
  • 暂估入库估多了怎么办
  • 建设工程中设备计入包干价是否合法
  • 购买空调做账分录
  • 新办企业必须经过什么核准登记
  • 管理会计与核算会计的区别
  • 消费税的科目设置在哪里
  • 平板电脑中的电池工作时是将什么能转化成了电能
  • WIN10如何设置电脑自动锁屏
  • mac uuid查询
  • 本地磁盘安装
  • 360se是什么文件夹
  • windowsxp如何隐藏文件
  • win8搜索不到文件
  • win7系统开机
  • win8怎么设置
  • 事件委托机制的三个主要组件
  • unity lightmap uv
  • inline-block
  • unity笔记本
  • java性能调优实战 网盘
  • Python装饰器入门学习教程(九步学习)
  • unity导出ios项目到iphone
  • js中的require函数
  • jquery不生效的原因
  • 喜大普奔含义
  • 河北省电子税务局app下载
  • 税务筹划前景
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设