位置: 编程技术 - 正文

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

  • 工资里个人代扣款是什么
  • 什么是纳税义务人,在理解这一观念时应注意哪些问题
  • 计提印花税会计分录最新
  • 进项税额转出是在当月还是回到所属期
  • 所得税汇算清缴补税的会计处理
  • 餐饮业增值税是多少
  • 吸收合并一般需要多久
  • 包工包料怎么付款流程
  • 无偿调入固定资产计提折旧吗
  • 当前时间该属期不可申报
  • 发票认证是干嘛
  • 应收账款核销的会计处理
  • 买车支付的车辆购置税怎么入账
  • 特许权使用费计算公式
  • 调表不调账最后会有什么问题
  • 应付未付的职工工资属于什么会计科目
  • 投资收益的表现形式
  • 社会保险的登记和申报程序
  • 进项税发票认证流程
  • 预收电费怎么做会计分录
  • 哪些费用可以税后扣除
  • 小规模季度不超过45万的税收优惠
  • 保险代理人佣金的规定
  • 公司购买房产的税费
  • 有哪些方法可以判断乳剂的类型
  • 跨月的红字发票
  • 预付账款和应付账款怎么调账
  • 跟a签订合同可以撤销吗
  • 网站防止被刷票怎么解决
  • 房产税和土地使用税征税对象
  • html5微博
  • 金融机构与小微企业借款合同印花税
  • 酒店损益类科目包括哪些
  • 新会计准则里的现金流量的公式
  • 固定资产备案有什么用
  • java后端代码例子
  • 哪些费用发票可以抵扣企业所得税
  • 预收账款未发货会计分录
  • 以前年度进项转出账务处理
  • 公司向公司借款合法吗
  • 社保可以抵扣吗
  • 收据大写后面的空格怎么填
  • 个人转让房产税率
  • 财政专户资金支出
  • 全年一次性奖金并入或单独哪个好
  • 融资租赁的会计处理方法举例子
  • 未确认融资费用摊销额怎么计算
  • 企业一次性伤残就业补助金是由保险赔付吗
  • 应交税金的负数重分类
  • 年金现值和年金终值的例题
  • 哪些可以做进项税
  • 《新会计准则》
  • 如何审核原始凭证的正确性
  • win2000安全模式怎么进
  • windows service 2008 r2
  • solaris删除文件命令
  • wave editor教程
  • Win10 Mobile 10572升级后QQ/微信无法发送图片
  • 怎么用苹果电脑打印照片
  • 教你彻底消灭牛身上的蜱虫
  • 重装win7系统后鼠标键盘不能用
  • linux中快捷键
  • win7如何安装kb3033929补丁
  • OpenGL Tutorial: (2) Creating an OpenGL Window
  • opengl画直线函数
  • 简单谈谈对中国电信的认识
  • jquery对动态生成的进行操作
  • linux shell 循环语句
  • java深入理解
  • jQuery+ajax实现文章点赞功能的方法
  • linux echo echo
  • 浅析python中SQLAlchemy排序的一个坑
  • jquery 列表控件
  • java教程csdn
  • gridlayout用法
  • 是否一般纳税人怎么查
  • 出口退税期限最长几个月以上
  • 公司买的保险怎么查询保单明细
  • 山东增值税普通发票查询
  • 税务局纳税服务品牌
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设