[英]Yii2 filter on related model where relation name is lower camelCase
我已經成功地實現了http://www.yiiframework.com/wiki/653/displaying-sorting-and-filtering-model-relations-on-a-gridview/的工作。 在我的關系名稱只是一個單詞的情況下,這種方法一直很好。 但是,在我的關系名稱類似於subSector
: Column not found: 1054 Unknown column 'subSector.sub_sector' in 'where clause'
。
public function search($params)
{
$query = Product::find();
// add in relation to be able to search with
$query->joinWith(['sector', 'subSector'];
...
$dataProvider->sort->attributes['sub_sector_search'] = [
// The tables are the ones our relation are configured to
'asc' => ['subSector.sub_sector' => SORT_ASC],
'desc' => ['subSector.sub_sector' => SORT_DESC],
];
...
$query->andFilterWhere([
'product_id' => $this->product_id,
...
])
->andFilterWhere(['like', 'subSector.sub_sector', $this->sub_sector_search])
我還在類初始化下面添加了參數,並在規則中添加了安全術語。
到目前為止,所有3個單詞關系都可以進行過濾,而camelCase的兩個模型關系都返回unknown column
。
使用此代替:
->andFilterWhere(['like', Subsector::tableName() . '.sub_sector', $this->sub_sector_search])
等等。
這將解決重復列的問題,並且如果表名將來會更改,則只需要在模型中更改tableName()
方法,而無需在所有過濾器中替換它,等等。
框架將以下'subSector.sub_sector'
為: 'subSector.sub_sector'
只是以表名作為前綴的列名,因此,如果您的表的名稱不同於subSector
,例如subsectors
,它將無法正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.