0

講師はモジュールを教え、一部はモジュールの主催者です。ここでは、講師が教えるモジュールを取得しています。

array(
    (int) 0 => array(
        'organiser' => '1',
        'module_id' => '2',
        'lecturer_id' => '1',
        'Module' => array(
            'code' => 'MOD2',
            'name' => 'Z Name'
        )
    ),
    (int) 1 => array(
        'organiser' => '1',
        'module_id' => '1',
        'lecturer_id' => '1',
        'Module' => array(
            'code' => 'MOD1',
            'name' => 'Module Name'
        )
    )
)

モジュール名で並べ替えるにはどうすればよいですか? 結合テーブル (オーガナイザーなど) に追加のデータが必要なため、hasMany スルー リレーションシップを使用しました。以下は、講師のデータをプロファイルに含めるために使用する方法です。コメントアウトされた行は機能しません。

public function get($id = null) {
    $this->contain(
        array(
            'User',
            'County.name',
            'School' => array(
                'fields' => array('code', 'name')
            ),
            'ModuleStaff' => array(
                'fields' => array('organiser'),
                'Module' => array(
                    'fields' => array('code', 'name'),
                ),
                // 'order' => 'Module.name',
            )
        )
    );
    return $this->findByUserId($id);
}

ModuleStaff 結合クラスの関係は次のとおりです

public $belongsTo = array(
    'Lecturer' => array(
        'className' => 'Lecturer',
        'foreignKey' => 'lecturer_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    ),
    'Module' => array(
        'className' => 'Module',
        'foreignKey' => 'module_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    )
);

各 ModuleStaff は 1 つのモジュールにしかリンクしないため、Module の順序値に名前を追加しても機能しません。実際の ModuleStaff オブジェクトを子クラス内の値で並べ替える必要があります。

4

1 に答える 1

0

'order' => 'Module.name'要素をModule配列に入れようとしましたか? このような:

'ModuleStaff' => array(
    'fields' => array('organiser'),
    'Module' => array(
        'fields' => array('code', 'name'),
        'order'  => array('Module.name')
    )
)
于 2013-07-13T10:39:40.653 に答える