【问题标题】:How to sort related children Models using FuelPHP's ORM如何使用 FuelPHP 的 ORM 对相关子模型进行排序
【发布时间】:2012-07-25 03:50:09
【问题描述】:

我有一个 3 级模型结构:

  • Model_Race has_many Model_Class

  • Model_Class has_many Model_Driver

现在,假设 Model_Class 和 Model_Driver 有一个 order_index 属性来保持它们的顺序。

有没有一种干净的方法来获得比赛并正确排序班级和车手?

【问题讨论】:

    标签: fuelphp


    【解决方案1】:

    documentation 清楚地表明了这一点,我不知何故错过了它:

    查找数组语法

    $race = Model_Race::find($id, array(
            'related' => array(
                'class' => array(
                    'order_by' => array('order_index' => 'asc'),
                    'related' => array(
                        'driver' => array(
                            'order_by' => array('order_index' => 'asc'),
                        )
                    )
                )
            )
        )
    );
    

    使用查询方法链语法

    (我更喜欢上述数组语法的方法)

    $race = Model_Race::query()
        ->related('race.class')
        ->related('race.class.driver)
        ->order_by('race.class.order_index', 'asc')
        ->order_by('race.class.driver.order_index', 'asc')
        ->get();
    

    将其构建到模型中

    您可以在模型中设置关系,以便默认情况下发生这种情况:

    种族模型:

    protected static $_has_many = [
        'classes' => [
            'conditions' => [
                'order_by' => [
                    'order_index' => 'asc'
                ]
            ]
        ]
    ];
    

    类模型:

    protected static $_has_many = [
        'drivers' => [
            'conditions' => [
                'order_by' => [
                    'order_index' => 'asc'
                ]
            ]
        ]
    ];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-27
      • 1970-01-01
      • 2018-09-19
      • 2019-02-23
      • 1970-01-01
      • 2012-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多