2017-03-06 17 views
0

Querybuilder objectLaravelのquerybuilderにeager loadingを使用することはできますか?

1が上見ることができるように、「eagerLoad」セクションとquerybuilderがあり$query->with('relation')を呼び出す受け入れますが、次のエラーを生成します。Method addEagerConstraints does not exist.

私はこの問題に関するいくつかのドキュメントを見つけることを試みたが、のdidnました多く見つけることはできません。この場合、熱心な負荷を使用することは可能ですか?もしそうなら、どのように誰に話すことができますか?一部の人々はそれが可能であり、エラーが私のコードで別のエラーが原因で発生し指摘したように

更新

。ここではいくつかのサンプルは以下のとおりです。

// Querybuilder 
$query->select([ 
    'persons.id as alumni_id', 
    ... 
]); 

$query->where('...'); // Based on search parameters 
$query->groupBy('alumni_id'); 

$query->with('relation'); 

$result = collect($query->get()); 

// Model 
public function relation() 
{ 
    // Note: relation does have a column person_id 
    return $this->hasMany(Relation::class, 'person_id', 'alumni_id')->get(); 
} 

は、私の知る限り学んだよう

BadMethodCallException in Macroable.php line 81: Method addEagerConstraints does not exist. 
+0

表示関連のコードをしてください動作するはずです。 –

+0

これは可能ですが、docs [Eager Loading](https://laravel.com/docs/5.2/eloquent-relationships#eager-loading)ドキュメントをご覧ください。取得しているエラーは他のものと関連していますので、関連するコードを表示してコンテキストを少し理解できるようにしてください。 – Desh901

+0

@ Desh901:これを指摘していただきありがとうございます。見つけることができる文書がほとんどないためです。私はいくつかのコードサンプルを追加しましたが、何かが見つからないことを私に教えてください。 –

答えて

0

を生成し、querybuilderとモデルの関係をロードするために積極的なロードを使用することはできません。 (クエリービルダーはEloquentを活用していないので、関係についてはわかりません) 誰かが(部分的に)間違っていると分かっている場合は、教えてください。

0

これは、

// Querybuilder 
$query->select([ 
    'persons.id as alumni_id', 
    ... 
]); 

$query->where('...'); // Based on search parameters 
$query->groupBy('alumni_id'); 

$query->with('relation'); 

$result = $query->get(); // already returns a collection 

// Model 
public function relation() 
{ 
    // Note: relation does have a column person_id 
    // A relation should return an Eloquent object (HasMany in this case), not a collection 
    return $this->hasMany(Relation::class, 'person_id', 'alumni_id'); 
} 
関連する問題