yii 프레임워크를 접한 지 거의 두 달이 지났지만, yii 프레임워크에 대한 이해도가 깊지 않았고, 체계적으로 공부한 적도 없어서 작업할 때 몇 가지 문제에 부딪혔습니다. 프로젝트에 대한 지식을 이해한 경우에만 매뉴얼을 읽으십시오.
이전 프로젝트에서는 관련 테이블의 필드를 표시하고 검색 및 정렬 기능이 필요했는데 이전에는 이 기능을 접하지 못했기 때문에 매뉴얼에서 관련 정보를 검색하고 이 요구 사항을 작성했습니다. 가능할 때 다오윤이 메모를 했는데 오늘이 마침 주말이어서 블로그로 정리할 시간이 있었어요.
더 이상 고민하지 않고 곧바로 단계를 진행해 보겠습니다.
배경: 여기서는 GII에서 자동으로 생성한 CURL에 관련 테이블 필드를 추가합니다.
요구 사항: 테이블 A에 테이블 B와 연결된 pt_id 필드가 있습니다. 이제 검색 및 정렬 기능을 사용하여 테이블 A의 GII에서 생성된 CURL을 기반으로 테이블 B와 연결된 필드의 이름 값을 추가해야 합니다. .
1 //意思即获取Pt的数据 2 public function getPt() //get** get后面任意 3 { 4 //模型名:className(),B表字段=>A表对应字段 5 return $this->hasOne(Pt::className(), ['id' => 'ptid']); 6 }
1 public $name; //可以关联显示多个字段 2 public $*****; //例子
1 //search函数中添加 表示在SQL语句中增加关联查询 2 //看起来是那么的熟悉,哈哈 3 $query->joinWith(['pt']); //这里等待pt中的值就是step1中get后面的命名
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 );
1 //在代码里面照着队形添加这一句即可 2 //like,关联表全名,this->name 3 $query->andFilterWhere(['like', '**_pt.name', $this->name]) ;
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 ]
이제 절반 이상 완료되었습니다. 이 컨트롤러에 액세스하면 이미 페이지 효과가 표시되지만 검색할 때 작동하지 않습니다. 왜일까요?
이번에 제출하신 분야 정보가 안전하지 않아 프로그램에 기록되지 않기 때문입니다.
1 //在A Search中的设置规则方法中添加 2 //name字段为safe3 [['name'], safe]
작업이 완료되었습니다! !
이것은 단지 작은 예일 뿐입니다. Yii에 관련 필드를 추가하는 방법을 알 수 있으며, 기존 지식을 바탕으로 더 많은 트릭을 변경할 수 있습니다. . . .
위 내용은 Yii 프레임워크에서 검색 및 정렬 기능을 갖춘 연관 필드 구현 사례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!