我在Yii搜索時遇到問題。我有兩個型號:Teams
和Workers
。在網站上有一個名爲「團隊工作人員」的頁面,我想在其中顯示CGridView小部件,其中顯示了來自團隊的工作人員(團隊ID作爲_GET
參數傳遞)。在Yii中搜索相關模式
我TeamsController
這樣做:
public function actionWorkers($id)
{
$model = Teams::model()->findByPk($id);
$workers = Workers::model();
$workers->unsetAttributes();
if(isset($_GET['Workers']))
{
$_GET['Workers']['idTeam'] = $id;
$workers->attributes = $_GET['Workers'];
}
else {
$workers->attributes = array('idTeam' => $id);
}
$teamWorkers = $workers;
$this->render('workers', array(
'model' => $model,
'teamWorkers' => $teamWorkers
));
}
並在視圖文件:
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'team-workers-grid',
'dataProvider'=>$teamWorkers->search(),
'filter' => $teamWorkers,
'columns'=>array(
'name',
'surname',
array(
'id' => 'idWorker',
'class' => 'CCheckBoxColumn',
'checked' => '$data->confirmer',
'selectableRows' => '2',
// 'headerTemplate' => '{item}'
)
),
)); ?>
我得到了錯誤:
CDbCommand nie zdołał wykonać instrukcji SQL: SQLSTATE[23000]: Integrity constraint
violation: 1052 Column 'idTeam' in where clause is ambiguous. The SQL statement
executed was: SELECT COUNT(DISTINCT `t`.`idWorker`) FROM `workers` `t` LEFT OUTER JOIN
`teams` `Team` ON (`t`.`idTeam`=`Team`.`idTeam`) WHERE ((idTeam=:ycp0) AND (Team.name
LIKE :ycp1))
當我不設置idTeam
屬性 - 它工作正常。這很奇怪 - 在常規CRUD admin
頁面 - idTeam
屬性被傳遞並且工作正常。
熱點處理呢?
請發佈代碼,你正在做的加入。最有可能的搜索方法。 – Kai 2013-03-01 13:15:41