【问题标题】:Ordering by child value CakePHP containable按子值排序 CakePHP 可包含
【发布时间】:2013-07-11 15:21:20
【问题描述】:

讲师教授模块,有些是模块组织者。在这里,我正在获取讲师教授的模块:

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 through 关系,因为连接表中需要额外的数据(例如组织者)。这是我用来在其个人资料中包含讲师数据的方法。注释掉的行不起作用。

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' => ''
    )
);

将名称添加到 Module 的订单值也不起作用,因为每个 ModuleStaff 只链接到一个 Module,我需要按子类中的值对实际 ModuleStaff 对象进行排序。

【问题讨论】:

    标签: php cakephp web-applications


    【解决方案1】:

    您是否尝试将'order' => 'Module.name' 元素放入Module 数组中?像这样:

    'ModuleStaff' => array(
        'fields' => array('organiser'),
        'Module' => array(
            'fields' => array('code', 'name'),
            'order'  => array('Module.name')
        )
    )
    

    【讨论】:

    • 试过了还是不行,只有在每个 ModuleStaff 包含多个 Modules 的情况下才有效
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    相关资源
    最近更新 更多