前言
最近在学习yii2.0,在使用yii2.0过程中遇到一些问题,现将查询搜索分页的方法整理如下,分享出来供大家参考学习,话不多说,来一起看看详细的介绍:
主表:{{%article}}
关联表:{{%article_class}}
方法如下
1、使用gii创建创建、读取、更新和删除和搜索不详述
2、在文章中添加的关联内容,代码#注释部分
类文章扩展yiidbActiveRecord { #关联查询1:这里加上被关联字段public $ class _ name.public function rules(){ return [' article_title ',' article_content'],['article_content ',' article _ title ',' article_class'],' string ',['article_addtime ',' article_updatetime ',' integer'],[' article_title ',' article_author'],' string ',' max'=50],#关联查询2:这里加上安全的验证,表示该表单字段无验证规则['class_name ',' safe'],];} .#关联查询3:获取被关联表mysite_article_class公共函数getArticleClass(){ /** *第一个参数为要关联的子表模型类名称, * 第二个参数指定通过子表的编号去关联主表的文章类字段*/return $ this-has multi(article class :3360 class name(),[' id '=' article _ class ']);} .} 3、在文章搜索中添加的查询和关联内容,代码#注释部分
类别文章搜索扩展了文章{ #关联查询1:这里加上被关联字段public $ class _ name.public function rules(){ return[[[' id ',' article_addtime ',' article_updatetime'],' integer'],['article_title ',' article_content ',' article_class ',' article_author'],' safe ',#关联查询2:这里加上安全的验证,表示该表单字段无验证规则['class_name ',' safe'],];} .公共函数search($ params){ $ query=article : find();//在此添加应始终适用的条件#关联查询4:使用与.合作和挑选做关联查询$ query=文章: find();$ query-与([' article class '])连接;$query-select('{{%article}}).*,{{%article_class}} .class _ name’);$dataProvider=新的活动数据提供程序([' query '=$ query,]);$ this-load($ params);if(!$ this-validate()){ return $ data provider;} //网格过滤条件#精确查询$ query-AnD filter where([' id '=$ this-id,' article _ addtime '=$ this-article _ addtime,' article _ updatetime '=$ this-article _ updatetime,#关联查询5:添加被关联字段的精确查询,这里要跟视角表单被查询属性一致,//'{{%article_class}} .class_name'=$this-class_name,]);#模糊查询$query-andFilterWhere(['like ',' article_title ',$ this-article _ title])-and filter where([' like ',' article_content ',$ this-article _ content])-and filter where([' like ',' article_author ',$this-article_author]) #关联查询5:添加被关联字段的精确查询,这里要跟视角表单被查询属性一致、-和筛选器这里(['like ',' {%article_class}}).class_name ',$ this-class _ name]);返回$ dataProvider}.} 4、在文章控制器中添加的分页内容,代码#注释部分
公共函数actionIndex(){ $ Article=new Article();#查询$ search model=新文章搜索();$ data provider=$ search model-search(yii : $ app-request-query params);#分页$数据提供程序-分页=['页面大小'=' 3 '];返回$this-render('index ',[ 'dataProvider'=$dataProvider,' model'=$article,' searchModel'=$searchModel,]);} 5、在索引视图中添加的表单内容,代码#注释部分
?=GridView : Widget([' data provider '=$ data provider,#查询表单' filtermodel'=$ searchmodel,' columns '=[' class '=' yii grid serial column ',Header'='No . ',],//'article_class ',#注意这里关联的表字段是{{%article_class}}。class_name,并且表单属性被写成“attribute”=“class _ name”。#查询结果为字段值' value'='class_name ',[' label '=' Article classification ',' attribute'=' class _ name ',' value'=' class _ name ',],' article _ title ',Article _ addtime:datetime ',//'article _ author ',['class'=' YII grid action列',' header'=' operation ',],],]);上述步骤的结果如下:
摘要
以上就是本文的全部内容。希望本文的内容能给你的学习或工作带来一些帮助。有问题可以留言交流。谢谢你的支持。