2015-05-06 2 views
1

У меня есть модель с отношениями:Сортировка соответствующих данных не работает

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

но он по-прежнему возвращает несортированные данные. Помоги пожалуйста.

+0

http://stackoverflow.com/questions/26964641/yii-findall-with-order-by – Najzero

ответ

1

order по отношению используется только при ленивой загрузке отношения. From the Yii guide on relations:

Примечание: при использовании опции загрузки стремятся такое отношение как «порядок», «группы», «с», «предел» и «смещение» будут проигнорированы. Вы должны настроить такие параметры на уровне основных критериев модели, если вы хотите, чтобы их применяли .

Вы можете передать массив критериев вместо строки в качестве первого параметра findAll(). Это будет использоваться для инициализации объекта CDbCriteria. Для того, чтобы заказать по отношению Вам необходимо eager load отношение с помощью with():

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

Это работа, спасибо! –

Смежные вопросы