CGrid
ページでリレーショナル モデルを使用してリレーショナル データを並べ替えているときに問題が発生しました。
簡単に私のシナリオ:
私はユーザー model: Entities=> id,username
とプロファイル Model: Entities=> id, firstname,lastname, user_id,
などを持っています..
profile mode
l とusername
from user model
inを一覧表示したいCGrid
ので、ソートと検索がうまくいきます。私の場合、ソート はではなく によってusername
行われます。で検索したいので、次のようにします。user_id
username
username
私のコントローラーアクション:
$model = new Profile('search');
$model -> unsetAttributes();// clear any default values
if (isset($_GET['Profile']))
$model -> attributes = $_GET['Profile'];
$this -> render('MyPage', array('model' => $model ));
私のモデル関係:
public function relations() {
// NOTE: you may need to adjust the relation name and the related
// class name the relations automatically generated below.
return array(
'user' => array(self::BELONGS_TO, 'user', 'user_id'),);
}
モデルのルール:
array( 'xxx,yyy,user_name', 'safe', 'on'=>'search' ),
そして機種検索機能
if(!empty($this->user_id)){
$criteria->with='user';
$criteria->order = ::app()->request->getParam('sort');// 'username ASC'
}
$criteria -> compare('user.username', $this->user_id, true);
じぶんの
$this->widget('zii.widgets.grid.CGrid', array(
'id'=>'profile-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
array('name'=>'user_id',
'header'=>User::model()->getAttributeLabel('username'),
'value' =>'$data->getRelated(\'user\')->username',
'type'=>'raw',
'htmlOptions'=>array('style'=>'text-align: center'),),
---------------
user_id
ソート中、ソートは完全に機能しますが、ソートはnot byに基づいて行われusername
ます。そうするために私が欠けているものは何でも。提案してください。
参照:こちら(リンクで提案されているようにパブリック変数を宣言することも試みましたが、ボットは動作しています。)
編集:問題が修正された後。このリンクもありがとう。