2015-12-30 12 views
9

Ich habe eine einfache Beziehung 1: N, um einige Preise von einem einzigen Modell zu erhalten.Sortieren hasMany Beziehung in Yii2

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

Aber ich brauche Preise sorteds durch eine bestimmte Eigenschaft in diesem Fall $value

Objekte habe ich mehrere Beispiele in Yii 1 aber nichts in Yii 2

Dank gesehen @vishu ich das versucht habe, :

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

} 

Aber jetzt gibt es ein leeres Array zurück.

Antwort

16

Ich glaube, Sie die Reihenfolge, in Beziehung, die durch direkt

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

Versuchen Sie dieses ....

public function getPrices() 
{ 
    $this->hasMany(Prices::className(), ['device_id' => 'id']) 
    ->viaTable('table_name', ['device_id' => 'id'], function ($query) { 
     $query->andWhere(['column_name' => value]) 
      ->orderBy(['sort' => SORT_DESC]); 
    }); 
} 

Reference

+0

gesetzt Ich habe versucht, und ich bin ein leeres Array immer Ihre ID – Sageth

+0

zu überprüfen und dann laufen? – vishuB

+0

check my edit, das ist was ich benutzt habe – Sageth

0

Einstellung, um direkt in Beziehung möglicherweise nicht zuverlässig zuordnen können in besonderen Fällen. So können Sie bestellen in AR Abfrage

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