我有一对多关系的问题!因此,我尝试将产品价格相加,我的意思如下:
型号:产品。php
/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function orders(){
return $this->hasMany(Order::class);
}
型号:Orders.php
/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function product(){
return $this->belongsTo(Product::class);
}
所以我想让smth像这样:$var-
我的数据库(如果需要):
订单:id产品| id |用户| | |-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|
产品只有4列:id、名称、价格、描述
我的意思是:
products:
id\1
name\productname
price \1.00USD
id\2
name\productname2
price \1.00USD
它必须返回所有产品的总和,因此必须返回2.00美元
@乔纳斯·斯塔德梅尔
试试这个QueryBuilder查询:
DB::table('orders')
->leftJoin('products','orders.product_id','=','products.id')
->where('orders.user_id',Auth::user()->id)
->select('orders.*','products.*',DB::raw("SUM(products.price) as order_total"))
->groupBy('orders.product_id')
->get();
我找到了解决办法!所以我做到了
我像以前一样使用当前关系,并按顺序执行该函数。php模型
public function getTotalPrice() {
$orders = self::with('product')->get();
$total = 0;
foreach($orders as $order) {
$total += $order->product->price;
}
return $total;
}
现在我可以使用像obj这样的函数,并将其称为$var-
在Laravel 6中,我们可以这样使用,非常直接
$total = $order->product->sum('price');