"UserFlag"モデルからのリレーションを持つ "User"モデルの結果を表示するのにCgridviewを使用しています。Yiiリレーショナルモデルの列名が重複しているCgridview
"ユーザー" モデル - > tbl_user(ID、名前、パスワード、フラグ) "フラグ" モデル - > tbl_userFlag(ID、フラグ)
IDは、両方のモデルから同じことを意味します。 しかし、フラグは異なっています(私はデータベースを変更できないので、それに固執する必要があります)。そして、私はそれらを同じgridviewに表示する必要があります。私が遭遇
問題が GridViewのは正しく両方のフラグを表示することができますが、私は、「ユーザー」モデルからフラグをソートし、フィルタリングしようとすると、それは失敗し、エラーを示すことです。 (ただし、「UserFlag」モデルのフラグは、並べ替えとフィルタリングがうまく機能します)
どうすれば解決できますか?
エラー・ログ:
CDbCommand failed to prepare the SQL statement: SQLSTATE[HY000]: General error: 1 ambiguous column name: flag.
"ユーザー" モデル:
class User extends CActiveRecord
{
public function relations()
{
return array(
'FLAG' => array(self::HAS_ONE, 'UserFlag','id'),
);
}
public function search()
{
$criteria=new CDbCriteria;
$criteria->compare('id',$this->id);
$criteria->compare('name',$this->username,true);
$criteria->compare('password',$this->password,true);
$criteria->compare('flag',$this->flag,true);
$criteria->with = array(
'FLAG' => array(
'select' => 'FLAG.flag',
'together' => true,
)
);
$criteria->compare('FLAG.flag',$this->flagFromB,true);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'sort'=> array(
'attributes'=>array(
'flagFromB' => array(
'asc' => 'FLAG.flag',
'desc' => 'FLAG.flag DESC',
),
'*',
),
),
));
}
"UserFlag" モデル:表tbl_userFlag(ID、フラグ)
「ユーザーに
リンク"ビュー:
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'user-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'id',
'username',
'password',
'email',
'flag',
array(
'name' => 'flagFromB',
'type' => 'raw',
'value' => '$data->FLAG->flag',
),
array(
'class'=>'CButtonColumn',
),
),
));