2016-09-24 13 views
-1

これらのレコードが別のテーブルに存在しない場合は、テーブルからすべてのレコードを取得する必要があります。
テーブル '車のLaravel - 別のテーブルにレコードのコレクションがない場合

| ID | Name_of_car 
+----+---------------- 
| 1 .| Toyota 
+----+---------------- 
| 2 .| Ford 

テーブル 'Crashed_cars'

| car_id | crash_date 
+--------+---------------- 
| 1 .....| 22-02-2016 

今、私はすべての車をクラッシュしないで取得したい - どのように私はこれを行うことができますか?
現時点ではループを使用していますが、エントリ数(約3000)のために直接的なコレクションを使用する必要があります。ここに私のクエリは次のとおりです。

Cars::select('id', 'firstname', 'lastname', 'car', 'color')->get(); 

答えて

2

最良の方法は、すべてのクラッシュした車のIDを取得するにはおそらく、その後、他のすべての車を探して。言い換えれば、次のようなものがあります。

$crashedCarIds = CrashedCar::pluck('car_id')->all(); 
$cars = Car::whereNotIn('id', $crashedCarIds)->select(...)->get(); 
0

1つのクエリで同じ結果が得られます。これにより、処理速度が向上します。

select * from dbo.Students S FULL OUTER JOIN dbo.Advisors A ON S.Advisor_ID=A.Advisor_ID where A.Advisor_ID is null 

記事:http://www.datamartist.com/sql-inner-join-left-outer-join-full-outer-join-examples-with-syntax-for-sql-serverなしを

一つは、FULL OUTERは、この例のように、次の資料から、これを達成するためにをJOINを使用することができます。 6.

幸運!

関連する問題