2016-04-27 15 views
0

私は、雄弁になってjoinステートメントと同等の処理をすることはできません。Laravel Eloquent JOIN id is nullです。

基本的に以下のコード私は、次のようなクエリをしたいから:

$cars = Vehicle::with(['images' => function($q){ 
    $q->orderBy('order'); 
}])->take(24)->get(); 

現在、は関係なく、かどうか、彼らのすべての車両を戻す:

SELECT * 
FROM Vehicle v 
JOIN VehicleImage i ON v.id = i.vehicle_id 
limit 24 

これは私が現在使用しているクエリですイメージを持っているかどうかはわかりません。私はこれを望んでいない、私は1つ以上の画像を持つ行が欲しい。これは可能ですか?

class Vehicle extends Eloquent 
    { 

     public function images() 
     { 

      return $this->hasMany('App\Domain\Vehicles\VehicleImage'); 

     } 
    } 

    class VehicleImage extends Eloquent { 

     public function vehicle() 
     { 
      return $this->belongsTo('App\Domain\Vehicles\Vehicle'); 
     } 

    } 
+0

それは 'WITH'のために参加しdoen't。それは熱心なloadinであり、2つのクエリを使用します。 2番目は 'IN'です。 – Dinar

答えて

0

withの参加権はありません。それは熱心な読み込みであり、2つのクエリを使用します。 2番目はINです。

JOINと同等の機能を使用しない場合は、クエリビルダを使用してください。

Vehicle::leftJoin('...')->get();

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

あなたのクエリを監視する場合にも、このパッケージをインストールします。

https://github.com/barryvdh/laravel-debugbar

+0

ありがとうございます。それは私がしようとしていることは、雄弁なモデルだけでは達成できないということですか?一つのモデル(Vehicles)を結合で使うことはできますが、両方を使うことはできません。 –

+0

なぜですか? これは、ORM-wayまたはQuery Builder Wayを使用できることを意味します。しかし、ORMはJOINを使用しません。また、互換性があるため、どのような方法でも組み合わせて組み合わせることができます。 – Dinar

+2

私はそれが内部結合であるべきだと答えていると答えています: 'Vehicle :: join( '...') - > get(); ' –