位置: 编程技术 - 正文

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

  • 如何分辨海关完税凭证的真假?
  • 一般纳税人企业所得税是多少
  • 人工费用与制造成本区别
  • 银行短期存款利息怎么算
  • 免税外汇商品
  • 小规模企业收入怎么做账
  • 所得税费按年缴纳?
  • 企业所得税发票税前扣除异常
  • 增值税一般纳税人证明怎么查询
  • 其他人挂靠公司交社保会计处理怎么做?
  • 个人持有原始股要交税吗
  • 旅行社开的旅游费发票可以税前扣除
  • 租房提取的话可以全部提取吗
  • 免抵退税系统操作流程
  • 临时人员工资需交税吗
  • 公司筹建期产生的费用如何开票?
  • 发票校验码后六位图解
  • 劳务派遣公司一般纳税人税率是多少
  • 开具的增值税专用发票上注明的价款为50万元
  • 支付给业主的赔偿金
  • 开模具公司要什么设备
  • 员工垫付费用多久报销合理
  • linux命令执行成功后会返回什么
  • 仓库折旧费
  • 外贸公司收汇可以收运费吗
  • php面向对象实例
  • 两名山地车骑手死亡
  • Micheldever Wood的蓝铃花,英国汉普郡 (© Hursley/Getty Images Plus)
  • 对其他公司的建议
  • php pdo类
  • php正则函数内容匹配
  • 发放职工薪酬账务怎么做
  • 材料款零头抹掉怎么做凭证
  • 使用筷子就餐会不会传染乙肝病毒
  • php统计系统
  • 帝国cms8.0
  • 印花税计提怎么做分录
  • 伤残补助金和工资一样吗
  • 运输行业一般纳税人开普票税率是多少
  • 个体户的税收政策
  • 企业购置房产进项税税率
  • 企业应纳税额中包括进项税额
  • 公司个人所得税申报操作流程
  • 城建税的减免规定有哪些
  • 用人单位性质怎么填
  • 建筑发票开具与土增税扣有什么关系?
  • 税控设备抵减税款分录
  • 国库集中支付是什么意思
  • 一般哪些收据可以抵扣
  • 工会经费为0是不用申报的?
  • 教育局可以接受捐赠吗
  • 发出存货的计价应当采用
  • 小规模纳税人购入固定资产怎么做账
  • 营销活动开什么发票
  • 母子公司之间内部交易形成的坏账可以所得税税前扣除吗
  • 转回存货跌价准备对递延所得税资产的影响
  • 建账前的准备工作
  • 工业企业接受捐赠收入计入
  • 微软6月24发布
  • win8任务栏假死
  • win8.1无法安装net framework 3.5
  • sendmail邮件服务器的配置
  • 动态设置class
  • 请问在javascript程序中
  • unity如何避免碰撞穿透
  • opengl learn
  • js实现apply函数
  • 网页制作css怎么用
  • unity ui控件
  • unity导出3d模型
  • github上有什么
  • 基于Python的图书推荐系统
  • javascript学习指南
  • 使用SQLite本地数据库
  • javascript基本语句
  • 东莞市国税局南城莫
  • 个人所得税追缴很快就缴清了还会被罚款吗
  • 个人彩票收入属什么类别
  • 蜀山区税务局工资待遇
  • 海口市哪个地方最漂亮
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设