2016-11-06 1 views
1

で()を見つける:雄弁が、私はこのURLの定番メソッドを介して一つのレコードを取得したい参加し、積極的なロード

public/api/laptop/1 

はこのルートを打つ:

Route::get('laptop/{id}', '[email protected]'); 

、このコントローラのメソッド:

$laptop = Laptop::find($id)->addJoins()->selectListCols()->with('earmarks', 'movements')->get(); 
return $laptop; 

問題はありません(すべてのレコードを返します)。

$laptop = Laptop::where('laptops.id', $id)->addJoins()->selectListCols()->with('earmarks', 'movements')->get(); 
return $laptop; 

しかしfind()が動作しない理由を私は思ったんだけど:それは私がこれをしなければならない動作させるには?耳鳴りや動きは、多対一のモデルです。

答えて

2

find()だけshortcut for where()->first()がそう、それはオブジェクトを返しますとQuery Builder方法はそれでは動作しませんです。

あなたが with()を使用できるようにあなたは、クエリビルダオブジェクトを返します where()を、使用する必要がある理由です
User::find(1); // Will return User object with ID = 1. 

およびその他のビルダーメソッドを使用してクエリを作成します。

+0

よろしくお願いいたします。上記のように 'where()'を使うことには何らかの欠点がありますか? – daninthemix

+0

いいえ、このクエリで 'where()'を使うのは絶対に普通です。 –

+0

もう一度ありがとうございます。ですから、 'find()'は結合を行う必要がない場合や、選択が1つのレコードを取得するよりも複雑な場合にのみ役立つと考えるのは正しいでしょうか? – daninthemix

関連する問題