【问题标题】:Order by related data doesn't work按相关数据排序不起作用
【发布时间】:2015-05-06 08:23:58
【问题描述】:

我有关系模型:

public function relations()
{
    return array(
        'fidistr' => array(self::BELONGS_TO, 'Distributors', 'fidistr_id', 'order'=>'fsname'),
        'fitown' => array(self::BELONGS_TO, 'Town', 'fitown_id'),
        'distributorsPointMails' => array(self::HAS_MANY, 'DistributorsPointMail', 'fidistr_point_id'),
        'distributorsPointPhones' => array(self::HAS_MANY, 'DistributorsPointPhones', 'fidistr_point_id'),
    );
}

我想通过“fsname”从相关表中订购数据。我试过这个:

$models = DistributorsPoint::model()->findAll('fitown_id=:id', array('id' => $_POST['city_id']));

但它仍然返回未排序的数据。请帮忙。

【问题讨论】:

标签: php sql yii


【解决方案1】:

关系上的order 仅在延迟加载关系时使用。 From the Yii guide on relations:

注意:当使用像“订单”这样的关系选项时, 'group'、'have'、'limit' 和 'offset' 将被忽略。你应该 如果您愿意,可以在主要模型标准级别设置此类参数 应用它们。

您可以传递条件数组而不是字符串作为findAll() 的第一个参数。这将用于初始化CDbCriteria 对象。要按关系排序,您需要使用with()eager load 关系:

$models = DistributorsPoint::model()
    ->with('fidistr')
    ->findAll(array(
        'condition' => 'fitown_id=:id',
        'order'     => 'fidistr.fsname',
        'params'    => array(':id' => $_POST['city_id'])
   ));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    相关资源
    最近更新 更多