Подтвердить что ты не робот

Сортировать hasMany отношение в Yii2

У меня есть простое соотношение 1: N, чтобы получить некоторые цены из одной модели.

public function getPrices()
    {
        return $this->hasMany(Prices::className(), ['device_id' => 'id']);
    }

Но мне нужно отсортировать объекты сортировки по определенному свойству в этом случае $value

Я видел несколько примеров в Yii 1, но ничего в Yii 2

Благодаря @vishu я пробовал это:

public function getPrices()
{
    return $this->hasMany(Prices::className(), ['device_id' => 'id'])
        ->viaTable(Prices::tableName(), ['device_id' => 'id'], function ($query) {

            $query->orderBy(['device_price' => SORT_DESC]);
        });

}

Но теперь он возвращает пустой массив.

4b9b3361

Ответ 1

Я думаю, что вы можете назначить порядок непосредственно по отношению к

public function getPrices()
{
    return $this->hasMany(Prices::className(), ['device_id' => 'id'])->
      orderBy(['device_price' => SORT_DESC]);
}

Ответ 2

Используйте как.......

public function getPrices()
{
    return $this->hasMany(Prices::className(), ['device_id' => 'id'])
                ->orderBy(['device_price' => SORT_DESC]);
 }

Ссылка

Ответ 3

Порядок настройки непосредственно в отношении может быть ненадежным в конкретных случаях. Таким образом, вы можете установить порядок в AR-запросе

Device::find()
->where(['id' => $id])
->with('prices' => function(\yii\db\ActiveQuery $query) {
    $query->orderBy('device_price DESC');
})
->one();