2017-08-01 8 views
2

thisとは別の問題があります。シナリオは同じですが、結果のフィルタリングがさらに必要になります。結合テーブルから列を選択する方法:laravel eloquent

私を説明しましょう。

は、私は2つのテーブル

id 
name 
staff_id 
distance 
mileage 

スタッフ

id 
name 
designation 

を持って考えてみましょう私は両方のテーブル(モデル)からのみidnameを選択します。 車両モデルには、belongsToのスタッフモデルとの関係が含まれています。

class Vehicle extends Model 
{ 
    public function staff() 
    { 
     return $this->belongsTo('App\Staff','staff_id'); 
    } 
} 

と私はそれがvehicleテーブルをフィルタリングし、この

->get(['id','name']) 

よう->get()のフィールドを置くが、スタッフテーブルのない結果を生成しない場合、私はこの

Vehicle::where('id',1) 
      ->with(['staff'=> function($query){ 
          // selecting fields from staff table 
          $query->select(['staff.id','staff.name']); 
          }]) 
      ->get(); 

を使用して参加しました。

アイデア?

答えて

0

は、最後にそれが故に参加し、スタッフのテーブルを行うことができなかった、あなたは私がstaff_idをしていないので、この

Vehicle::where('id',1) 
      ->with(['staff'=> function($query){ 
          // selecting fields from staff table 
          $query->select(['staff.id','staff.name']); 
          }]) 
      ->get(['id','name','staff_id']); 

LIKE「staff_id」を配置する必要があり->get()で.. をそれを見つけましたフィールドは表示されませんでした。

1

はこれを試してみてください:一つだけが許可されているので、あなたが一度に参加中の両方idを取ることができない、ので

Vehicle::join('staff','vehicles.staff_id','staff.id') 
     ->select(
        'vehicles.id', 
        'vehicles.name', 
        'staff.id as staff_id', 
        'staff.name' 
     ) 
     ->get(); 

Vehicle::where('id',1) 
    ->with(['staff'=> function($query){ 
     // selecting fields from staff table 
     $query->select('id','name'); 
    }]) 
    ->get(); 
+0

が機能しました。論理は何ですか? –

+0

は申し訳ありません。それは問題ではありませんでした!私はそれを投稿させてください..スタッフを削除しても結果に変更はありませんでした。 –

1

あなたはこのように参加ノーマルを使用することができます。だから、スタッフのIDはstaff_idとすることができます。

where句のようにあなたが車両ID条件を追加することができます。

Vehicle::join('staff','vehicles.staff_id','staff.id') 
     ->where('vehicle.id',1) 
     ->select(
        'vehicles.id', 
        'vehicles.name', 
        'staff.id as staff_id', 
        'staff.name' 
     ) 
     ->get(); 

はあなたが理解してほしいです。

+0

私は '雄弁な'方法でやっていた –

+0

@anil_pulikodenさて、とにかくあなたは解決策を持っていることをおめでとう。 –

+1

答えてくれてありがとう..歓声! :) –

関連する問題