2017-10-18 8 views
0

すべての結合テーブルの値を表示できますが、問題は複製されているということです。私は既に私のコントローラーで別のものを使用しています。クエリビルダーの結合を使用して複数のテーブルから一意の値を取得

トランザクションのproduct、qty、およびtrans_amountを表示したいとします。

Table View

コントローラー:

$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 
+0

これはLINQに関する質問です – Cloud

+0

distinctの代わりにgroup byを使用してください。 – Rits

+0

どのようなグループですか?ありがとう – ElementsOfLife

答えて

0

私はすでにこれを私自身で解決しました。皆さんのご支援に感謝します。私は、prod_idとqtyをtransactions_soldsテーブルにマージし、distinctを使用しました。

1

ここでの問題がありそうな目でユーザーテーブルへの参加。これは、あなたが望む結果に基づいて必要とは思われません。

+0

しかし、私はユーザーが参加から削除しても、それはまだ同じです – ElementsOfLife

関連する問題