2017-10-23 10 views
1

私は雄弁を使用していない、私のモデルはこのようなものです。laravelのすべてのレコードを取得する方法モデル

class drivers extends Model 
{ 
} 

私は(1行に1レコードの)すべてのドライバのレコードを表示したい

マイドライバテーブルは、フィールド(driver_idnametyre_id)を持っている

マイタイヤ表ましたフィールド(id,title

私の銀行の表は...私は私の記録は次のようになりたい

Driver IdNameBank DetailsTyre Title

100000111AyerAvailableGOをフィールド(iddriver_idbank

を持っています

..など

driver_idに銀行テーブルのレコードがある場合、銀行の詳細については、それ以外の場合はN/Aと表示されます。

$drivers= Drivers::get(); 
$myarray =(); 
foreach ($drivers as $d){ 
    $bank = Bank::where('driver_id',$d->driver_id)->first(); 
    $tyre = Tyre::where('id',$d->tyre_id)->first(); 
    $myarray[] = $d->driver_id; 
    $myarray[] = $d->name; 
    $myarray[] = isset($bank) ? "available" ; ''; 
    $myarray[] = $tyre->title; 

} 

これは私が試したものですが、私はどのように私はlaravelでこれを達成することができ、laravelに新たによまたはDBテーブルのようなクエリを使用していますか?

+0

あなたは基本的にどちらかの使用が一緒にテーブルを結合するために、参加や関係する必要がありますので、[OK]をクリックします。また、 ' - > first()'を実行したくない場合は、 ' - > get();'を実行してからブレードファイルに 'foreach()'ループを使うだけで1つの結果しか取得できません。私はタイヤの一致の 'id'を' driver_id'と仮定することができますか? – Option

答えて

0

Laravelは雄弁クエリビルダデータベース操作を実行するための2つの非常に便利なツールを提供しています。一般的に実行する必要がある一般的な操作の多くを容易にするので、雄弁とその関係でできるだけ多くのことを行うことをお勧めします。あなたは、クエリビルダを使用することができ、より複雑なクエリを作成したい場合は

さて、また、クエリビルダを使用した場合の例は、このようなものになるだろう:あなたのコントローラで

クエリを作成し、ビューにデータを渡す:

$data = DB::table('driver') 
      ->leftJoin('bank', 'bank.driver_id','=', 'driver.driver_id') 
      ->join('tyre', 'tyre.id','=', 'bank.tyre_id') 
      ->select('driver.driver_id as id', 
        'driver.name', 
        'bank.id as bank_id', 
        'tyre.title') 
      ->groupBy('driver.driver_id') 
      ->get() 

そして、あなたのビューでは、データを表示するために(そして、あなたが銀行のフィールドを表示する条件を使用することができます)foreachループを使用することができます。

<table> 
    <thead> 
     <tr> 
      <th>Driver ID</th> 
      <th>Name</th> 
      <th>Bank Detail</th> 
      <th>Tyre Title</th> 
     </tr> 
    </thead> 
    <tbody> 
     @foreach($data as $item) 
      <tr> 
       <td>{{ $item->id }}</td> 
       <td>{{ $item->name }}</td> 
       <td>{{ isset($item->bank_id) ? "availible":"N/A" }}</td> 
       <td>{{ $item->title }}</td> 
      </tr>      
     @endforeach 
    </tbody> 
</table> 

同様に、雄弁の文書を読み、それを使用することをお勧めします。

https://laravel.com/docs/5.5/queries

https://laravel.com/docs/5.5/eloquent

0

これを解決するための良い方法は、リンク laravel documentation

は、ベーステーブルとしてあなたのドライバのテーブルを選択し、他のテーブルのフィールドを取得するために関係を使用し、ここでlaravel関係 です。 array_push()関数は、加入してDBファサードを使用している配列

0

別の方法に値をプッシュする:このような:

$users = DB::table('users') 
     ->join('contacts', 'users.id', '=', 'contacts.user_id') 
     ->join('orders', 'users.id', '=', 'orders.user_id') 
     ->select('users.*', 'contacts.phone', 'orders.price') 
     ->get(); 
関連する問題