我有 2 張桌子。一種是產品(id,名稱)。另一個是 In(id, amount, products_id)。我正在嘗試獲取總金額的產品名稱。示例:Aerobat-34 戰神-3 Rs537-15
我加入了表格。現在輸出是
[{"name":"Aerobat","amount":"10"},{"name":"Aerobat","amount":null},{"name":"Aerobat","amount":null},{"name":"Aerobat","amount":null},{"name":"Aerobat","amount":"2"},{"name":"Aerobat","amount":"56"},{"name":"Aerobat","amount":"56"},{"name":"god of war","amount":"7"},{"name":"god of war","amount":"23"},{"name":"Rs537","amount":null},{"name":"Rs537","amount":null},{"name":"Rs537","amount":null}]
public function index()
{
$product = DB::table('Products')
->join('ins', 'products.id', '=', 'ins.products_id')
->select('Products.name', 'ins.amount')
->get();
echo $product;
}
如何找到預期的結果?
uj5u.com熱心網友回復:
你可以像這樣得到它
public function index()
{
$product = DB::table('Products')
->join('ins', 'products.id', '=', 'ins.products_id')
->select('Products.name', 'ins.amount',DB::raw('sum(ins.amount) as total'))
->get();
echo $product;
}
uj5u.com熱心網友回復:
嘗試這個
public function index()
{
$product = DB::table('products')
->join('ins', 'products.id', '=', 'ins.products_id')
->select('products.name', DB::raw('sum(ins.amount) as total_amount'))
->groupBy('ins.products_id')
->get();
echo $product;
}
uj5u.com熱心網友回復:
您應該首先使用模型關系,在 Product 模型中創建一個名為 ins() 的函式
public function ins()
{
return $this->hasMany('App\Models\Ins', 'product_id');
}
您還可以為執行該產品總金額的產品宣告一個虛擬列。注意,你應該用“get”作為前綴和“Attribute”作為后綴來設定名稱
public function getTotalAmountAttribute()
{
$totalAmount=0;
foreach($this->ins as $item){
$totalAmount =$item->amount??0
}
return $totalAmount;
}
最后,您可以使用名稱和總金額等兩個欄位
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/428227.html
上一篇:選擇第三張表的查詢
下一篇:如何在一列中連接多個不同的行
