2015-02-06 78 views
0

我正在使用Yii2 GridView中具有關係的模型。如果我嘗試使用索引頁上的ID進行搜索,則會導致SQL錯誤,因爲該ID是明確的。如何使用表名爲Yii2定義限定屬性GridView

SQLSTATE [23000]:完整性約束違規:1052列 'ID' 中 where子句是正在執行的曖昧SQL是:SELECT COUNT(*)FROM LEFT re_ingredient JOIN re_ingredient_lang ON re_ingredientid = re_ingredient_langingredient_id LEFT JOIN re_ingredient_group_lang ON re_ingredientingredient_group_id = re_ingredient_group_langingredient_group_id WHERE((id = '1')和 (re_ingredient_lang。外語= 'EN-US'))AND (re_ingredient_group_lang。外語= 'EN-US')

我在views/ingredient/index.php代碼:

<?= GridView::widget([ 
    'dataProvider' => $dataProvider, 
    'filterModel' => $searchModel, 
    'columns' => [ 
     ['class' => 'yii\grid\SerialColumn'], 

     ['attribute' => 'id', 'contentOptions' => ['width' => '80px'] ], 
     ['attribute' => 'NDB_No', 'contentOptions' => ['width' => '80px'] ], 
     ['attribute' => 'group_name', 'value' => 'ingredientGroupLang.name'], 
     ['attribute' => 'name', 'value' => 'translation.name'], 
     ['attribute' => 'name_alt', 'value' => 'translation.name_alt'], 
     'name_lat', 
     // 'created_at', 
     // 'updated_at', 

     ['class' => 'yii\grid\ActionColumn', 
     'contentOptions' => ['style' => 'white-space: nowrap;'] ], 
    ], 
]); ?> 

我怎麼能實現,那re_ingredient.id where子句,而不是簡單的id中使用?

+0

添加您的搜索模型代碼($ dataProvider構成的部分)。 – arogachev 2015-02-06 09:07:06

回答

0

public function search()

$query->andFilterWhere(['like', 're_ingredient.id', $this->id]) //here re_ingredient.id 

就是它添加re_ingredient.id而不是id

+0

謝謝,解決方案是微不足道的,我已經監督它。在我看來,Gii應該到處使用表名,即缺省的Gii模板並不是真的正確。 – 2015-02-11 14:45:28

相關問題