Php 使用laravel eloquent获得字段的和

Php 使用laravel eloquent获得字段的和,php,laravel,eloquent,Php,Laravel,Eloquent,我开始使用Laravel,我喜欢这个框架,现在我开始从事一个小项目,我想知道如何使用SUM来获得我在一个名为variants的表中的变量总数,我想对stock字段进行求和 变量表中存在库存字段 我怎样才能把sum和雄辩结合起来呢 这是我的密码 $products = Product::with(['category', 'brand', 'supplier'])->orderBy('id', 'desc')->paginate(15); 我的模型变量函数 public functi

我开始使用Laravel,我喜欢这个框架,现在我开始从事一个小项目,我想知道如何使用SUM来获得我在一个名为variants的表中的变量总数,我想对stock字段进行求和

变量表中存在库存字段

我怎样才能把sum和雄辩结合起来呢

这是我的密码

$products = Product::with(['category', 'brand', 'supplier'])->orderBy('id', 'desc')->paginate(15);
我的模型变量函数

public function variant(){
        return $this->hasMany('App\Variant', 'product_id','id');
    }

您是否需要使用任何过滤器/条件进行求和?如果不是这样,则可以简单到:

$sum = Variant::sum('stock');

变体
表与
产品
表的关系如何?

调用时方便,因为它与

添加访问者: 在产品型号中:

protected$appends=['stock_sum'];
公共函数getStockSumAttribute(){
返回$this->variants()->sum('stock');
}
因此,您可以按产品将其称为:

$products=Product::with(['category','brand','supplier'])->orderBy('id','desc')->paginate(15);
$products->first()->库存总额;

使用product_id field我如何用我的口才做到这一点;产品::带有(['category'、'brand'、'supplier'])->orderBy('id'、'desc')->分页(15);您想要所有相关产品的库存总额,还是只想要页面上已检索的产品?您可以使用
$this->variants()->sum('stock')
提高性能。当
变体
关系不急于加载且不需要时,速度会快得多。@EliasSoares u'r right,thx为您提供建议,我只是在收集时求和。使用
variants()->sum
db中的sum。我已经更新了。@TsaiKoga我得到了库存金额:0,因为我有两行,每行包含数字10,我已经更新了我的问题检查我的变量function@TsaiKoga很好,谢谢你,只是我想了解getStockSumAttribute函数如何调用以及在何处调用it@RicardoAbel它是一个虚拟属性,如果您定义了这个getter方法,如果有此属性,则可以通过每个产品对象调用它。