Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >YII关联字段并带搜索排序功能

YII关联字段并带搜索排序功能

作者头像
那一叶随风
发布于 2018-08-22 03:23:25
发布于 2018-08-22 03:23:25
1K00
代码可运行
举报
文章被收录于专栏:同步博客同步博客
运行总次数:0
代码可运行
1、简介

  从接触yii框架到现在已经快有两个月了,但是自己对yii框架的了解程度并不是很深,并没有系统地去学习,仅仅只是在做项目的时候遇到不懂得知识才去翻手册。

  在上一个项目中因为需要将关联的表的字段显示出来并且带搜索排序功能,这个在之前并没有接触过,因此在手册中查找了相关的资料把这个需求写出来了,并在有道云做了一些笔记,今天刚好是周末有时间就将它整理成一篇博客吧。

  废话不多说,直接上步骤吧。

2、操作步骤

  背景:这里针对GII自动生成的CURL中,增加关联表字段。

  需求:A表中有一个字段pt_id关联B表;现在需要在基于A表GII生成的CURL的基础上,增加A表关联B表字段的name值,并且带有搜索排序功能。

  2.1、step1在A model中添加一个方法
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 //意思即获取Pt的数据
2 public function getPt()    //get**  get后面任意
3 {
4     //模型名:className(),B表字段=>A表对应字段 
5     return $this->hasOne(Pt::className(), ['id' => 'ptid']); 
6 }
   2.2、step2在A search 中添加需要关联的字段变量
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 public $name;   //可以关联显示多个字段
2 public $*****;  //例子
   2.3、修改A search中的search函数
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 //search函数中添加 表示在SQL语句中增加关联查询
2 //看起来是那么的熟悉,哈哈
3 $query->joinWith(['pt']);   //这里等待pt中的值就是step1中get后面的命名
   2.4、在A search中设置排序配置
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 //这里存放的是可以排序的字段
 2 //如果A Search已经存在setSort,则其他动,只需要添加新的字段就可以了
 3 //但是,我的yii 2生成的Search不存在这个排序,因此就需要额外添加了
 4 //注意:当你的search中不存在这个配置时,即表明默认配置里面有设置过,当你在这里添加一个setSort则将会覆盖默认配置,之前默认有排序功能的字段将会失效
 5 $dataProvider->setSort(
 6 'attributes'=>[
 7 //====添加新字段排序配置=
 8 'name'=>[
 9 'asc'=>['name' => SORT_ASC],
10 'desc'=>['name' => SORT_DESC],
11 'lable'=>'name',
12 ],
13 //==================
14 ]
15 );
   2.5、在A search中添加过滤配置
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 //在代码里面照着队形添加这一句即可
2 //like,关联表全名,this->name
3 $query->andFilterWhere(['like', '**_pt.name', $this->name]) ;
  2.6、修改index视图中的gridview
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 'columns' => [
 2 //===========
 3 //添加
 4 [
 5           'attribute' => 'name',
 6           'label' => '平台',
 7           'value' => 'pt.name',
 8           'filter' => Html::activeTextInput($searchModel, 'name', [
 9               'class' => 'form-control'
10           ]),
11 ],
12 //=============
13 ]

  此时已经完成一大半了,你访问这个控制器,已经可以看到页面效果了,但是在搜索的时候确实失效的,为什么呢?

  因为此时你提交的这个字段信息是属于不安全的,程序中没有记录。

  2.7、给该字段设置为安全级别
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 //在A Search中的设置规则方法中添加
2 //name字段为safe
3 [['name'], safe]

大工告成!!

3、小结

  这里仅仅只是一个小小的例子,通过这个例子可以知道yii添加关联字段的方法,那么你就可以根据现有的知识更改出更多的花样出来。。。。

(以上是自己的一些见解,若有不足或者错误的地方请各位指出)

 作者:那一叶随风 http://www.cnblogs.com/phpstudy2015-6/

 原文地址:http://www.cnblogs.com/phpstudy2015-6/p/7712017.html

 声明:本博客文章为原创,只代表本人在工作学习中某一时间内总结的观点或结论。转载时请在文章页面明显位置给出原文链接

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-10-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Yii2 学习笔记之 GridView DetailView
在 GridView 小部件是从数据提供者获取数据,并以一个表格的形式呈现数据。表中的每一行代表一个单独的数据项,列表示该项目的属性。 在 DataGrid 小部件中的列是在 yii\grid\Col
guanguans
2018/05/09
2.4K0
Yii2工作中的一些方法技巧
假设我们当前页面的访问地址是:http://localhost/public/index...
botkenni
2019/09/02
3.5K0
Yii2用Gii自动生成Module+Model+CRUD
URL:http://localhost/项目目录/backend/index.php/gii
botkenni
2019/09/03
4.8K0
Yii2用Gii自动生成Module+Model+CRUD
Yii2.0小部件GridView(两表联查/搜索/分页)功能的实现代码
GridView 两表联查/搜索/分页 当我们在一个网格视图中显示活动数据的时候,你可能会遇到这种情况,就是显示关联表的列的值,为了使关联列能够排序,你需要连接关系表,以及添加排序规则到数据提供者的排序组件中,对数据进行搜索,排序。 Ⅰ.控制器层Controller
用户2323866
2021/07/02
7610
Yii使用技巧大汇总
db组件 'schemaCachingDuration'=>3600, 为什么不起做用?
botkenni
2019/09/02
2.7K0
Yii2框架踩坑记录-数组数据渲染到后台页面带分页
不得不说Yii框架还是一个非常高效的框架,Gii扩展能生成简单的CRUD操作,问题也就出在这里,我的数据不是直接从单独的表出来的,需要连查,需要递归操作
沈唁
2018/09/18
1.9K0
Yii2框架踩坑记录-数组数据渲染到后台页面带分页
Yii2 学习笔记之数据库篇
1.简单查询: [[one()]] // 根据查询结果返回查询的第一条记录。 [[all()]] // 根据查询结果返回所有记录。 [[count()]] // 返回记录的数量。 [[sum()]] // 返回指定列的总数。 [[average()]] // 返回指定列的平均值。 [[min()]] // 返回指定列的最小值。 [[max()]] // 返回指定列的最大值。 [[scalar()]] // 返回查询结果的第一行中的第一列的值。 [[column
guanguans
2018/05/09
3.3K0
yii2开发后记
基础总结 1.修改默认控制器/方法 yii默认是site控制器,可以在web.php中设置$config中的'defaultRoute'='xxxx';使用自定义默认的控制器。也可以改写Yii::$a
枕边书
2018/01/04
3.6K0
Yii2 速查表
Yii的数据库读取对象,在PDO之上,DAO后有了Query Builder和AR
双面人
2019/06/25
2K0
TP5 关联模型使用(嵌套关联、动态排序以及隐藏字段)
如果要获得分类表中每条分类 以及 对应的商品的信息,则需要先查询分类表中的数据,然后根据结果遍历查询商品表,最后把数据拼接在一起
全栈程序员站长
2022/07/08
1.6K0
TP5 关联模型使用(嵌套关联、动态排序以及隐藏字段)
yii2组件之下拉框带搜索功能的示例代码(yii-select2)
简单的小功能,但是用起来还是蛮爽的。分享出来让更多的人有更快的开发效率,开开心心快乐编程。 如果你还没有使用过composer,你可就out了,看我的教程分享,composer简直就是必备神奇有木有。都说到这个点上了,我们赶紧使用composer进行安装吧。 不急,先来看看效果图是啥样的,不然都没心情没欲望看下去。
用户2323866
2021/07/06
1.2K0
如何从 0 到 1 实现一个支持排序、查找、分页的表格组件(React版)
我们每天有可能都在与数据列表打交道,比如列表的分页、查找列表(搜索查询)、按照指定的列升序降序排列这些需求,你可能再尝试使用 react-table or Ant Design table 这样的组件完成这些需求,但通常这些库与你特定案例的设计和需求不匹配,并且具有许多你不需要的功能,有时,自己动手可能会更好些,以便在功能和设计方面具有完全的灵活性。今天小编看到一位国外大佬写的关于此主题的文章,在此分享给大家,本篇文章并不是完全按照原作者的文章进行翻译,加上了小编的一些理解,希望对大家有所帮助。
前端达人
2021/11/16
2.8K0
[开源推荐] Yii2开发的简单日程管理后台
系统是基于Yii2的高级版开发,后台使用的是ace admin。我比较看中的是里面有一个时间日期组件,这个在广告或者是日程方面都有用处,可以剥离出来研究研究。
PHP学习网
2022/12/17
1.7K0
[开源推荐] Yii2开发的简单日程管理后台
ThinkPHP6.0学习笔记-模型操作
模型的数据字段和对应的数据表字段是对应的,默认会自动获取(以及类型),自动获取的过程会加一次查询操作(浪费资源),thinkphp支持自定义字段信息。
Mirror王宇阳
2020/11/13
4.1K0
Laravel5.2之模型关联预加载
说明:本文主要说明Laravel Eloquent的延迟预加载(Eager Loading),使用延迟预加载来减少MySQL查询次数。同时,会将开发过程中的一些截图和代码黏上去,提高阅读效率。
botkenni
2022/01/10
2.9K0
Laravel5.2之模型关联预加载
【译】20个 Laravel Eloquent 小技巧(下)
(设定了一个在返回对象时候的附加属性 ‘full_name’参见 tips5 模型属性: 时间戳, 附加属性(appends) 等)
彪彪
2019/03/29
3.2K0
【译】20个 Laravel Eloquent 小技巧(下)
React Table 表格组件使用教程 排序、分页、搜索过滤筛选功能实战开发
本文完整版:《React Table 表格组件使用教程 排序、分页、搜索过滤筛选功能实战开发》
蒋川@卡拉云
2022/07/12
17.9K0
React Table 表格组件使用教程 排序、分页、搜索过滤筛选功能实战开发
Yii数据库操作方法指南
CDbConnection: 一个抽象数据库连接 CDbCommand: SQL statement CDbDataReader: 匹配结果集的一行记录 CDbTransaction:数据库事务 访问数据库前需要建立数据库连接;使用DAO建立一个抽象数据库链接: $connection = new CDbConnection($dsn, $username, $password); $connection->active = true;     // 只有激活了连接才可以使用 $connection->a
joshua317
2018/04/16
1.7K0
推荐阅读
相关推荐
Yii2 学习笔记之 GridView DetailView
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验