其他聚合函数方法在我的 laravel 8 项目中不起作用

Other Aggregate Functions method not work in my laravel 8 project

我有 laravel 项目,框架版本为 laravel 8.11.2。 当我想和 Other Aggregate Functions 一起工作时 withSum() 告诉我错误

我的代码:

       $buyInvoice=BuyInvoice::Where([
        ['provider_id',$validatedData['ProviderCode']],
        ['InvoiceDate','>',$fromDate],
        ['InvoiceDate','<',$ToDate],
    ])->withSum('jewelsItems', 'weight')
         ->orderBy('jewelsItems_sum_weight')
         ->get();

描述:我正在尝试对我在某些条件下找到的普通发票中的所有 jewelsItem 的重量求和,并将其存储在每张发票的新列中。

要点:我不想使用Raw Expressions 因为他们的漏洞

型号:

1.jewelItem 型号:

    protected $table = 'jewel_items';

public function jewel(){
    return $this->belongsTo('App\Models\Jewel');
}

public function buyInvoice(){
    return $this->belongsTo(BuyInvoice::class,'buy_invoice_id');
}

2.buyInvoice 型号:

    protected $table = 'buy_invoices';

public function provider(){
    return $this->belongsTo(Provider::class,'provider_id');
}

public function jewelsItems(){
return $this->hasMany(JewelsItem::class,'buy_invoice_id');
}

错误:

Call to undefined method App\Models\BuyInvoice::withSum()

是不是和我的框架有关?。 我怎样才能彻底解决这个问题?

您没有足够新的 Laravel 8 版本。

Release Notes for 8.x

v8.12.0 (2020-10-29) ... Added withMax()|withMin()|withSum()|withAvg() methods to Illuminate/Database/Eloquent/Concerns/QueriesRelationships (#34965, f4e4d95, #35004) ...

您至少需要 8.12.0.

版本