1、简介

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

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

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

2、操作步骤

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

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

  2.1、step1在A model中添加一个方法

 //意思即获取Pt的数据
public function getPt() //get** get后面任意
{
//模型名:className(),B表字段=>A表对应字段
return $this->hasOne(Pt::className(), ['id' => 'ptid']);
}

  2.2、step2在A search 中添加需要关联的字段变量

 public $name;   //可以关联显示多个字段
public $*****; //例子

   2.3、修改A search中的search函数

 //search函数中添加 表示在SQL语句中增加关联查询
//看起来是那么的熟悉,哈哈
$query->joinWith(['pt']); //这里等待pt中的值就是step1中get后面的命名

  2.4、在A search中设置排序配置

 //这里存放的是可以排序的字段
//如果A Search已经存在setSort,则其他动,只需要添加新的字段就可以了
//但是,我的yii 2生成的Search不存在这个排序,因此就需要额外添加了
//注意:当你的search中不存在这个配置时,即表明默认配置里面有设置过,当你在这里添加一个setSort则将会覆盖默认配置,之前默认有排序功能的字段将会失效
$dataProvider->setSort(
'attributes'=>[
//====添加新字段排序配置=
'name'=>[
'asc'=>['name' => SORT_ASC],
'desc'=>['name' => SORT_DESC],
'lable'=>'name',
],
//==================
]
);

  2.5、在A search中添加过滤配置

 //在代码里面照着队形添加这一句即可
//like,关联表全名,this->name
$query->andFilterWhere(['like', '**_pt.name', $this->name]) ;

  2.6、修改index视图中的gridview

 'columns' => [
//===========
//添加
[
'attribute' => 'name',
'label' => '平台',
'value' => 'pt.name',
'filter' => Html::activeTextInput($searchModel, 'name', [
'class' => 'form-control'
]),
],
//=============
]

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

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

  2.7、给该字段设置为安全级别

 //在A Search中的设置规则方法中添加
//name字段为safe
[['name'], safe]

大工告成!!

3、小结

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

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

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

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

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

YII关联字段并带搜索排序功能的更多相关文章

  1. DRF:过滤&搜索&排序功能

    过滤功能利用的是第三方包 django_filters,搜索和排序利用的是 Django DRF 提供的 filters 示例代码如下: from rest_framework import filt ...

  2. [py]django的manytomany字段和后台搜索过滤功能

    我本来想搞下Django之select_related和prefetch_related的区别,看到这里有djangoapi的知识, 之前搞过django restfulapi,http://blog ...

  3. (使用STL自带的排序功能进行排序7.3.2)POJ 2092 Grandpa is Famous(结构体排序)

    /* * POJ_2092.cpp * * Created on: 2013年11月1日 * Author: Administrator */ #include <iostream> #i ...

  4. django的过滤和搜索排序功能django-filter

    参考: 1.https://django-filter.readthedocs.io/en/master/guide/usage.html#the-filter 2.https://www.cnblo ...

  5. Yii 2.0排序功能的使用

    在Yii2.0项目的实际开发中,经常会遇到使用Yii2.0自带的排序功能.下面是排序功能的具体使用方法. 一.设置排序规则 注意引入Sort类,如:use yii\data\Sort; // 设置排序 ...

  6. IOS UITableView拖动排序功能

    UITbableView作为列表展示信息,除了展示的功能,有时还会用到删除,排序等功能,下面就来讲解一下如何实现排序. 排序是当表格进入编辑状态后,在单元格的右侧会出现一个按钮,点击按钮,就可以拖动单 ...

  7. Easy UI combobox实现类似 Select2的效果,下拉带搜索框

    一直在开发一个新系统,其中用Easy UI作为前端框架,少不了用 combobox做为一个 下拉控件,它支持 可编辑 模糊本地数据过滤,也可支持 不可编辑 下拉 选择的功能: $('#ID' ).co ...

  8. yii2组件之下拉框带搜索功能(yii-select2)

    简单的小功能,但是用起来还是蛮爽的.分享出来让更多的人有更快的开发效率,开开心心快乐编程. 如果你还没有使用过composer,你可就out了,看我的教程分享,composer简直就是必备神奇有木有. ...

  9. [moka同学笔记]三、Yii2.0课程笔记(魏曦老师教程)关联字段增加搜索

    关联字段增加搜索 post表关联adminuser表,通过post.author_id  adminuser.id关联,在YII2.0生成搜索,关联字段搜索时,需要输入关联字段author的id才能搜 ...

随机推荐

  1. java 读取数据库中文信息,为何在jsp页面中出现乱码

    有如下几种解决办法:1.保证项目的字符编码和每一个jsp页面的字符编码一致,如果不一致可能导致中文乱码问题<%@ page language="java" contentTy ...

  2. 51 Nod 1028 大数乘法 V2【Java大数乱搞】

    1028 大数乘法 V2 基准时间限制:2 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 给出2个大整数A,B,计算A*B的结果. Input 第1行:大数A 第2行:大数B (A ...

  3. Choose the best route(最短路)dijk

    http://acm.hdu.edu.cn/showproblem.php?pid=2680 Choose the best route Time Limit: 2000/1000 MS (Java/ ...

  4. CLR 简介

    (一)CLR介绍 CLR是一个可以由多编程语言使用的运行时,CLR的核心功能:内存管理,程序集加载,安全性,异常处理,线程同步等等.可以被很多属于微软系列的开发语言使用. 事实上,在运行时,CLR根本 ...

  5. vuex使用心得分享(填坑)

    今天我们简单说一下vuex的使用,vuex是什么呢,相当于react的redux,如果项目使用数据过多的话,直接管理是非常不方便的,那么采用vuex,那些繁琐的问题就迎刃而解了,首先我们先看看官方对v ...

  6. Spark算子--countByKey

    转载请标明出处http://www.cnblogs.com/haozhengfei/p/1633ffc63e2c925e930adadc9528c830.html  countByKey--Actio ...

  7. ==和equals详解+例子

    一开始遇见==和equals我也是分不清,后来看了很多博客,收益匪浅, 担心以后给忘了,所以写下这个,以后复习可以用. (有哪里写得不对的,希望可以留言帮忙改进,大家一起共同进步) 一.Java数据类 ...

  8. 【笔记】css浮动的一些个人见解

    看<css 权威指南>已经有差不多两个月时间了,正好最近读到浮动这一章写一写个人对立面的概念的一些见解吧. 说之前还真不得不说这本书卖之前以为会说得通俗易懂读后才发现其实有些概念从文意上理 ...

  9. CSS3总结学习(一):CSS3用户界面

    在CSS3中,新的用户界面属性有很多,本文重点介绍resize,box-sizing,offset. 浏览器支持,如下图,图片源于W3school 1.CSS Resizing 在css3,resiz ...

  10. linux tpm 测试完整记录,亲测有效。

    没有tpm芯片,采用模拟器的方式来测试. 实验环境:内核版本 3.10.0-327 软件包准备: 内网,没有仓库,自己网上下载: 1. cmake-3.9.6-Linux-x86_64.tar.gz ...