>백엔드 개발 >PHP 튜토리얼 >Yii2는 검색 기능을 지원하기 위해 관련 필드를 활성화하는 메소드를 구현합니다.php 예제

Yii2는 검색 기능을 지원하기 위해 관련 필드를 활성화하는 메소드를 구현합니다.php 예제

WBOY
WBOY원래의
2016-08-17 13:02:30854검색

이 문서의 예에서는 Yii2가 관련 필드에 대한 검색 기능을 구현하는 방법을 설명합니다. 참고하실 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.

여기에는 두 개의 테이블이 있습니다. 테이블 구조는 다음과 같습니다. Companies_compay_id는 외래 ​​키입니다

yii2advanced.branches 테이블:

branch_id:int(11)
Companies_company_id:int(11)
Branch_name:varchar(100)
Branch_address:varchar(255)
Branch_created_date:날짜/시간
Branch_status:enum('활성','비활성')

yii2advanced.companies 테이블:

회사_ID:int(11)
회사명:varchar(100)
company_email:varchar(100)
회사 주소:varchar(255)
로고:varchar(200)
회사_시작_날짜:날짜/시간
회사_생성_날짜:날짜시간
company_status:enum('활성','비활성')

위 표에서 CompaniesCompany.company_name을 이용하면 회사명을 알 수 있으나 검색은 지원하지 않습니다.

검색 기능을 지원하려면 브랜치의 인덱스 뷰에 다음 코드를 추가해야 합니다.

<&#63;= GridView::widget([
  'dataProvider' => $dataProvider,
  'filterModel' => $searchModel,
  'columns' => [
    ['class' => 'yii\grid\SerialColumn'],
    //添加的代码开始
    [
      'label'=>'公司名',
      'attribute'=>'companies_company_id',
      'value'=>'companiesCompany.company_name'
    ],
     //添加的代码结束
    'companiesCompany.company_name',
    // 'branch_id',
    // 'companies_company_id',
    'branch_name',
    'branch_address',
    'branch_created_date',
    // 'branch_status',
    ['class' => 'yii\grid\ActionColumn'],
  ],
]); &#63;>

그런 다음 SearchBranches.php를 수정하세요

규칙을 수정하는 방법은 다음과 같습니다.

public function rules()
{
  return [
    [['branch_id'], 'integer'],
    [['branch_name', 'branch_address', 'branch_created_date', 'branch_status','companies_company_id'], 'safe'],
  ];
}

검색 방법 수정:

public function search($params)
{
  $query = Branches::find();
  $dataProvider = new ActiveDataProvider([
    'query' => $query,
  ]);
  $this->load($params);
  if (!$this->validate()) {
    // uncomment the following line if you do not want to any records when validation fails
    // $query->where('0=1');
    return $dataProvider;
  }
  // 添加下面这行代码
  $query->joinWith('companiesCompany');
  $query->andFilterWhere([
    'branch_id' => $this->branch_id,
  //  'companies_company_id' => $this->companies_company_id,
    'branch_created_date' => $this->branch_created_date,
  ]);
  $query->andFilterWhere(['like', 'branch_name', $this->branch_name])
    ->andFilterWhere(['like', 'branch_address', $this->branch_address])
    ->andFilterWhere(['like', 'branch_status', $this->branch_status])
     // 添加下面这行代码
    ->andFilterWhere(['like', 'companies.company_name', $this->companies_company_id]);
  return $dataProvider;

페이지를 새로고침하여 확인하세요

Yii와 관련된 더 많은 콘텐츠에 관심이 있는 독자는 이 사이트의 특별 주제인 "Yii 프레임워크 소개 및 일반 기술 요약", "우수한 PHP 개발 프레임워크 요약", "시작하기 위한 기본 튜토리얼"을 확인할 수 있습니다. with Smarty Templates", "php 객체지향 프로그래밍" 디자인 입문 튜토리얼", "php 문자열(문자열) 사용법 요약", "php+mysql 데이터베이스 조작 입문 튜토리얼" 및 "php 공통 데이터베이스 조작 기술 요약"

이 기사가 Yii 프레임워크를 기반으로 PHP 프로그램을 설계하는 데 도움이 되기를 바랍니다.

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