2017-04-11 13 views
0

私は私のコードLaravel 5.3wherehasとjoinを同時に使用するにはどうすればよいですか?

を使用するが、このようなものです:

public function getWishlist($param) 
{ 
    $num = 20; 
    $q = $param['q']; 
    $location = $param['location']; 

    $result = $this->product_repository->whereHas('favorites', function ($query) use($q, $location) { 
     $query->where('favorites.user_id', '=', auth()->user()->id) 
       ->where('products.status', '=', 1); 

     if($q) 
      $query->where('products.name', 'like', "%$q%"); 
    }) 
    ->join('stores', 'stores.id', '=', 'products.store_id'); 
    if($location) 
     $result->where('stores.address', 'like', "%$location%"); 

    if($q) 
     $result->where('products.name', 'like', "%$q%") 
       ->where('stores.address', 'like', "%$q%", 'or'); 

    dd($result->toSql()); 
    // ->paginate($num); 

    return $result; 
} 

実行し、結果が空になると

はwherehasだと同時に

を動作しない参加するには任意の解決策はあります私の問題を解決する?

+0

'参加する()あなたは、高度な使用することができると思うが、' 'whereHas()'と正常に動作します。 'toSql()'メソッドを使ってSQLクエリをチェックする必要があります。問題のデバッグに役立つかもしれません。 –

+0

@Gumit Gupta、私はこれを試しています: 'dd($ result-> toSql());'。エラーがあります: 'メソッドtoSqlは存在しません。 ' –

+0

' paginate() 'メソッドを呼び出す前に' toSql() 'を試してください。 –

答えて

0

私はどこ

$result = $result->where(function($query) use ($q) { 
     $query->where('products.name', 'like', "%$q%") 
     ->where('stores.address', 'like', "%$q%", 'or'); 
}) 
+0

動作しません。答えを完全なものに更新する –

関連する問題