按相关数据排序并不起作用

时间:2015-05-06 08:23:58

标签: php sql yii

我有关系模型:

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

但仍会返回未分类的数据。请帮助。

1 个答案:

答案 0 :(得分:1)

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

  

注意:当使用eager加载诸如'order'之类的关系选项时,   'group','having','limit'和'offset'将被忽略。你应该   如果您愿意,可以在主要模型标准级别设置此类参数   它们将被应用。

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

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