我有这些模型:
产品型号:
protected $fillable = ['id', 'name', 'qty', 'parent_id'];
public function parent() {
return $this->belongsTo(self, 'parent_id');
}
public function children() {
return $this->hasMany(self, 'parent_id');
}
我怎样才能获得父产品与其子产品的差异,例如:
产品 1:数量 = 1000;
产品 2:产品 1 的子产品,数量 = 100
产品 3:产品 1 的子产品,数量 = 300
预期查询结果如下:
Collection: {
all: [
App\Models\Product: {
id: 1,
qty: 1000,
sum_children: 400,
remaining: 600, // product_1_qty (1000) - sum_children (400)
},...
],
}
我已经尝试过类似 withSum 方法:
Product::withSum('children as ttl_children', 'qty') ->addSelect('qty - ttl_chilren');
但我无法进行这样的计算。
有人能帮助我或给我指明正确的方向吗?谢谢!