>  기사  >  백엔드 개발  >  Yii 프레임워크에서 검색 및 정렬 기능을 갖춘 연관 필드 구현 사례

Yii 프레임워크에서 검색 및 정렬 기능을 갖춘 연관 필드 구현 사례

黄舟
黄舟원래의
2017-10-23 09:06:451056검색

1. 소개

yii 프레임워크를 접한 지 거의 두 달이 지났지만, yii 프레임워크에 대한 이해도가 깊지 않았고, 체계적으로 공부한 적도 없어서 작업할 때 몇 가지 문제에 부딪혔습니다. 프로젝트에 대한 지식을 이해한 경우에만 매뉴얼을 읽으십시오.

 이전 프로젝트에서는 관련 테이블의 필드를 표시하고 검색 및 정렬 기능이 필요했는데 이전에는 이 기능을 접하지 못했기 때문에 매뉴얼에서 관련 정보를 검색하고 이 요구 사항을 작성했습니다. 가능할 때 다오윤이 메모를 했는데 오늘이 마침 주말이어서 블로그로 정리할 시간이 있었어요.

더 이상 고민하지 않고 곧바로 단계를 진행해 보겠습니다.

2. 작업 단계

배경: 여기서는 GII에서 자동으로 생성한 CURL에 관련 테이블 필드를 추가합니다.

 요구 사항: 테이블 A에 테이블 B와 연결된 pt_id 필드가 있습니다. 이제 검색 및 정렬 기능을 사용하여 테이블 A의 GII에서 생성된 CURL을 기반으로 테이블 B와 연결된 필드의 이름 값을 추가해야 합니다. .

 2.1. Step1 A 모델에 메소드 추가


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 검색에 연관시켜야 하는 필드 변수 추가


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

 2.3.


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

 2.4. A 검색에 정렬 구성 설정


 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 검색에 필터링 구성 추가


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

 2.6. 인덱스 뷰의 그리드뷰 수정


 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. 이 필드에 대한 보안 수준을 설정하세요


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

작업이 완료되었습니다! !

3. 요약

이것은 단지 작은 예일 뿐입니다. Yii에 관련 필드를 추가하는 방법을 알 수 있으며, 기존 지식을 바탕으로 더 많은 트릭을 변경할 수 있습니다. . . .

위 내용은 Yii 프레임워크에서 검색 및 정렬 기능을 갖춘 연관 필드 구현 사례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.