J'ai une relation simple 1: N pour obtenir des prix d'un modèle unique.
public function getPrices()
{
return $this->hasMany(Prices::className(), ['device_id' => 'id']);
}
Mais j'ai besoin d'objets de prix triés par une propriété spécifique dans ce cas $value
J'ai vu plusieurs exemples dans Yii 1
mais rien dans Yii 2
Grâce à @vishu, j'ai essayé ceci:
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]);
});
}
Mais maintenant, il retourne un tableau vide.
Je pense que vous pouvez assigner la commande directement par rapport à
public function getPrices()
{
return $this->hasMany(Prices::className(), ['device_id' => 'id'])->
orderBy(['device_price' => SORT_DESC]);
}
Utilisez comme .......
public function getPrices()
{
return $this->hasMany(Prices::className(), ['device_id' => 'id'])
->orderBy(['device_price' => SORT_DESC]);
}
Établir un ordre directement en relation peut ne pas être fiable dans des cas particuliers. Ainsi, vous pouvez définir l'ordre dans la requête AR
Device::find()
->where(['id' => $id])
->with('prices' => function(\yii\db\ActiveQuery $query) {
$query->orderBy('device_price DESC');
})
->one();