如何在laravel withCount方法中添加一定数量

时间:2017-01-26 19:11:36

标签: php laravel count eloquent

我有两个相关的模型,没什么特别的

class ModelOne extends Model {

    ...
    public function model_two() {
        return this->hasMany(ModelTwo::class, 'foreign_key');
    }
}

和:

class ModelTwo extends Model {

    ...
    public function model_one() {
        return this->belongsTo(ModelOne::class, 'foreign_key');
    }
}

在我的get函数中,我有:

public function get() {
    return ModelOne::withCount('model_two')->get();
}

我得到了很好的回应:

{
   "property_one": "property_one_value",
   "property_two": "property_two_value",
   "property_three": "property_three_value"
   "model_two_count: 5
}

但我需要的是在该计数中添加一定的数字,例如' 2',所以我想这样代替上面的json对象:

  {
   "property_one": "property_one_value",
   "property_two": "property_two_value",
   "property_three": "property_three_value"
   "model_two_count: 7
}

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

如果您想withCount()执行此操作,则可以覆盖模型中的withCount()getRelationCountQuery方法。

更简单的方法是使用map()帮助程序修改集合:

public function get() {
    $data = ModelOne::withCount('model_two')->get();
    return $data->map(function ($i) {
        $i->model_two_count = $i->model_two_count + 2;
        return $i;
    });
}