2

CGridView をセットアップしたいと思います。2 つの異なるテーブルのデータを 1 つのビューに表示したいと考えています。データは、student というテーブルと、employee という別のテーブルからのものです。

従業員は学生によって紹介されています(reg_no)

学生テーブル

reg_no (主キー) s_name dept f_name

従業員テーブル

e_no(主キー) e_name 設計者給与 reg_no(外部キー)

学生の (reg_no,s_name,f_name) テーブルと従業員テーブルの (design,salary) テーブルを単一のグリッド ビューで表示したいのですが、アイデアやチュートリアルを教えてください。

4

1 に答える 1

8

まず、モデルと関係が適切に定義されていることを確認してください。モデルをチェックして、関係があることを確認します。たとえば、従業員モデルにこのようなエントリが必要です。

function relations() {
    return array(
        'reg_no'=>array( self::BELONGS_TO, 'Student', 'reg_no' ),
    );
}

データ ソースとして配列の代わりに CGridView で CActiveDataProvider を使用します。

$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$model->searchEmplyees(),
 .......
 .......

データを CActiveDataProvider として返す別の検索基準をモデルに追加します。

public function seachEmployees()
{
    $criteria=new CDbCriteria;
    $criteria->alias = 'i';
    $criteria->compare('id',$this->id);
    .......
            ....... 
    $criteria->join= 'JOIN 'your table name' d ON (i.id=d.id)';

    return new CActiveDataProvider($this, array(
        'criteria'=>$criteria,
        'sort'=>array(
            'defaultOrder'=>'order_in_sna ASC',
        ),
    ));
}

Yii がこれらすべてをどのように処理しているかを理解できるように、参照用にこのコードを入力しました。これもまた、Yii Framework サイト からの良い例です

于 2012-05-28T11:41:28.413 に答える