すべての結合テーブルの値を表示できますが、問題は複製されているということです。私は既に私のコントローラーで別のものを使用しています。クエリビルダーの結合を使用して複数のテーブルから一意の値を取得
トランザクションのproduct、qty、およびtrans_amountを表示したいとします。
コントローラー:
$products = DB::table('transactions')
->join('transactions_prods', 'transactions_prods.trans_id', '=', 'transactions.id')
->join('products', 'products.id', '=', 'transactions_prods.prod_id')
->join('users', 'users.id', '=', 'transactions.user_id')
->join('transactions_solds', 'transactions_solds.trans_id', '=', 'transactions.id')
->select('transactions_prods.prod_id as id',
'transactions.type as Type',
'products.prod_name as product_name',
'transactions_prods.qty as qty',
'transactions.id as transid',
'users.id as user_id',
'transactions_solds.trans_amt as amount')
->where('transactions.type', '=', 'Sell')
->where('transactions.id', '=', $id)
->distinct()->get();
return view('system.transactions.edit_transaction')->with('products', $products);
edit_transactions.blade.php
<div class="panel-heading"><b>TransID: {{$products[0]->transid}}</b>
<br>
<b>CashierID: {{$products[0]->user_id}}</b>
</div>
<div class="panel-body" style="overflow-x:auto;">
<table id="data-table" class="table table-hover">
<thead>
<tr>
<th valign="middle">ID</th>
<th>Product</th>
<th>Qty</th>
<th>Amt</th>
<th>Action</th>
</tr>
</thead>
<tbody>
@foreach($products as $product)
<tr>
<td>{{$product->id}}</td>
<td>{{$product->product_name}}</td>
<td>{{$product->qty}}</td>
<td>{{$product->amount}}</td>
<td>
<a href="#" class="btn btn-sm btn-danger">REMOVE</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
テーブル:
transactions
id | type | user_id
transactions_prods
id | trans_id | prod_id| qty
transactions_solds
id | trans_id | trans_amt | trans_scd
users
id | name | role_id | email | password
これはLINQに関する質問です – Cloud
distinctの代わりにgroup byを使用してください。 – Rits
どのようなグループですか?ありがとう – ElementsOfLife