Ответ 1
Я думаю, что вы можете назначить порядок непосредственно по отношению к
public function getPrices()
{
return $this->hasMany(Prices::className(), ['device_id' => 'id'])->
orderBy(['device_price' => SORT_DESC]);
}
У меня есть простое соотношение 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]);
});
}
Но теперь он возвращает пустой массив.
Я думаю, что вы можете назначить порядок непосредственно по отношению к
public function getPrices()
{
return $this->hasMany(Prices::className(), ['device_id' => 'id'])->
orderBy(['device_price' => SORT_DESC]);
}
Используйте как.......
public function getPrices()
{
return $this->hasMany(Prices::className(), ['device_id' => 'id'])
->orderBy(['device_price' => SORT_DESC]);
}
Порядок настройки непосредственно в отношении может быть ненадежным в конкретных случаях. Таким образом, вы можете установить порядок в AR-запросе
Device::find()
->where(['id' => $id])
->with('prices' => function(\yii\db\ActiveQuery $query) {
$query->orderBy('device_price DESC');
})
->one();