在Yii2中排序hasMany关系

时间:2015-12-30 11:48:11

标签: php 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]);
        });

}

但现在它返回一个空数组。

3 个答案:

答案 0 :(得分:20)

我认为您可以直接分配订单

$('#checkusername').keyup(function() {
   var username = $('#checkusername').val();
    $.ajax({
        url: 'usernamecheck-validate.php',
        type: 'POST',
        data: {checkusername: username},
        success: function(data){
            $('.status').html(data);
        }
    });

});

答案 1 :(得分:0)

使用像.......

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

Reference

答案 2 :(得分:0)

在特定情况下,直接关联设置顺序可能不可靠。因此,您可以在AR查询中设置顺序

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