查询构建器中的未定义变量

时间:2019-01-19 11:44:22

标签: laravel eloquent laravel-5.7

我对雄辩的查询有疑问。 当我运行查询时,我得到未定义的变量:ccid

我已经通过函数传递了ccic

public function index($category)
{
    $currentuser = auth()->user();
    $ccid = $currentuser->clientcat_id;

    $products = DB::table('products')
        ->join('resomes', 'products.pricingcat_id', '=', 'resomes.pricingcat_id')
        ->join('users', function ($join) {
            $join->on('resomes.clientcat_id', '=', 'users.clientcat_id')
            //->where('users.clientcat_id', '=', 1);
            ->where(function($q) use($ccid){ 
                $q->where('users.clientcat_id', '=', $ccid);
            }
            );
        })
        ->select('products.*', 'resomes.discount', DB::raw('(products.price - (products.price * (resomes.discount/100))) as cPrice'))
        ->where('products.ccat_id', '=', $category)
        //->where(function($q) use($category){ $q->where('products.ccat_id', '=', $category);})
        ->orderBy('products.ccat_id', 'ASC')
        ->orderBy('products.price', 'ASC')
        ->paginate(config('pelma.products_list_pagination'));

    //print_r($products);
    return view('client.products.list', compact('products'));
}

有人知道吗? 非常感谢

2 个答案:

答案 0 :(得分:0)

您没有将$ ccid传递给

->join('users', function ($join)

您还必须使用$ ccid来实现此功能。

答案 1 :(得分:0)

您可以这样做

  

-> join('用户',功能($ join)使用($ ccid) {

解释在这里In PHP, what is a closure and why does it use the "use" identifier?