Yii2讓關聯字段支援搜尋功能

2021-07-03 04:05:29 字數 2632 閱讀 2269

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:datetime

branch_status:enum('active','inactive')

yii2advanced.companies表

company_id:int(11)

company_name:varchar(100)

company_email:varchar(100)

company_address:varchar(255)

logo:varchar(200)

company_start_date:datetime

company_create_date:datetime

company_status:enum('active','inactive')

在上面表中,可以用companiescompany.company_name來獲取公司名,不過這樣是不支援搜尋的。

想要支援搜尋功能,需要在branches的index檢視新增以下**

=

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'

],],

]);?>

然後修改searchbranches.php

修改rules方法為

public

function

rules

()

修改search方法

public

function

search

($params

)// 新增下面這行**

$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

;

重新整理頁面即可看到

YII2原生SQL分頁支援排序搜尋

yii2預設情況下會生成乙個直接操作單錶的模型並且具備搜尋和分頁以及排序功能,在很多複雜的業務邏輯需求中,單錶操作很難實現我們想要的效果,此時我要是選擇的話就用純sql來做,不用考慮那麼多的對應關係,而且你得sql語句執行效率越高,程式執行的效率也就越高。ok我們來看看怎麼實現。二 建表 yii a...

yii2新增redis支援

yii2官方有外掛程式支援redis擴充套件,可是按照官方操作手冊無法安裝 提示和openssl相關的錯誤 1,php composer.phar require prefer dist yiisoft yii2 redis 失敗 2,在composer.json新增依賴配置如下,執行compose...

yii2 GridView 關聯表字段的搜尋和排序

模型 biosafetycheck 檢查表 一對多 biosafetyaccept 接受項,檢查項 模型 biosafetyaccept 一對一 biosafetyproblem 問題與整改記錄 biosafetycheck 中 public function getbiosafetyaccepts...