2015-02-06 103 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

相关问题