2

CGridページでリレーショナル モデルを使用してリレーショナル データを並べ替えているときに問題が発生しました。

簡単に私のシナリオ:

私はユーザー model: Entities=> id,usernameプロファイル Model: Entities=> id, firstname,lastname, user_id,などを持っています..

profile model とusernamefrom user modelinを一覧表示したいCGridので、ソートと検索がうまくいきます。私の場合、ソート はではなく によってusername行われます。で検索したいので、次のようにします。user_idusernameusername

私のコントローラーアクション:

$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ます。そうするために私が欠けているものは何でも。提案してください。

参照:こちら(リンクで提案されているようにパブリック変数を宣言することも試みましたが、ボットは動作しています。)

編集:問題が修正された後。このリンクもありがとう。

4

1 に答える 1