Php 如何处理其中的空值?
我将执行以下查询,$category\u id和$industry\u id作为数组通过ajax请求。所以有时候$category\u id和$industry\u id可能是空值。那么,当数组为空时,如何避免该语句行呢Php 如何处理其中的空值?,php,laravel,laravel-5,laravel-query-builder,Php,Laravel,Laravel 5,Laravel Query Builder,我将执行以下查询,$category\u id和$industry\u id作为数组通过ajax请求。所以有时候$category\u id和$industry\u id可能是空值。那么,当数组为空时,如何避免该语句行呢 $products = DB::table('users') ->join('products','products.auth_id','users.id') ->Join('reviews','produ
$products = DB::table('users')
->join('products','products.auth_id','users.id')
->Join('reviews','products.id','reviews.product_id')
->select('products.*','users.avatar',DB::raw('(sum(rating)/count(user_id)) as rating'))
->orwhereIn('products.category_id', [$request->get('category_id')])
->orwhereIn('products.industry_id',[$request->get('industry_id')])
->where('products.status','=','1')
->groupBy('reviews.product_id')
->latest()
->get();
最简解
$query = DB::table('users')
->join('products','products.auth_id','users.id')
->Join('reviews','products.id','reviews.product_id')
->select('products.*','users.avatar',DB::raw('(sum(rating)/count(user_id)) as rating'))
->where('products.status','=','1')
->groupBy('reviews.product_id')
->latest();
if ($categoryId = $request->get('category_id')) {
$query->orwhere('products.category_id', $categoryId);
}
if ($industryId = $request->get('industry_id')) {
$query->orwhere('products.category_id', $industryId);
}
$products = $query->get();
顺便说一句-已将orWhere更改为orWhere as,但看起来它仍然是一个值。尝试此查询会有所帮助
$query = DB::table('users')
->join('products','products.auth_id','users.id')
->Join('reviews','products.id','reviews.product_id')
->select('products.*','users.avatar',DB::raw('(sum(rating)/count(user_id)) as rating'))
->where('products.status','=','1')
->groupBy('reviews.product_id')
->latest();
if ($request->has('category_id')) {
$query->orWhereIn('products.category_id', $request->get('category_id'));
}
if ($request->has('industry_id')) {
$query->orWhereIn(''products.industry_id', $request->get('industry_id'));
}
$products = $query->get();
COALESCE是您的朋友当值为null时,您可以使用if语句跳过此行并返回数据take two variable with$category_id=array_column$request->get'category_id';和$industry\u id=array\u column$request->get'industry\u id';使用where条件进行查询时进行->生成!当类别和行业有要求时执行!当我尝试使用您的解决方案时,我遇到了以下错误strtolower希望参数1是字符串,数组给定,而这不是一个值。我正在发送一个数组,其中可能有$category\u id或$industry\u id或两者。很抱歉,但它实际上看起来像一个值-您正在从它生成数组,并将其包装到尖括号中:[$request->get'category\u id']。无论如何,一般的aproach应该适合。