我怎样才能使用wherehas并同时加入?

时间:2017-04-11 00:11:55

标签: php laravel laravel-5.3 laravel-eloquent

我使用Laravel 5.3

我的代码是这样的:

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和join不能同时工作

有什么解决方案可以解决我的问题吗?

1 个答案:

答案 0 :(得分:0)

我认为你可以使用高级的地方

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