если условие в laravel запросе - PullRequest
0 голосов
/ 17 апреля 2020

иногда некоторые переменные имеют значение NULL, поэтому как проверить, что переменная не NULL, и применить прямое в запросе

 $fiter_products = DB::table('products')->DISTINCT('modalid')->DISTINCT('brandid')->select('rimdiameter','modalid','modalname1','modalname2','image1','brand','minprice','maxprice')->where('hubbore','>=',$centre_bore)->where('boltpattern',$boltptn)->where('rimdiameter', $diameter)->where('rimwidth', $width)->where('rimwidthfront', $frontwid)->where('construction', $construct)->where('modalname2', $color)->where('brand', $brand)->get(); 

, как-нибудь решить эту проблему?

Ответы [ 3 ]

1 голос
/ 17 апреля 2020

Вы можете передать другое Закрытие в качестве третьего параметра методу при . Это Закрытие будет выполнено, если первый параметр оценивается как ложный.

$fiter_products = DB::table('products')
                   ->DISTINCT('modalid')
                   ->DISTINCT('brandid')
                   ->select('rimdiameter','modalid','modalname1','modalname2','image1','brand','minprice','maxprice')
->when($centre_bore, function($query,  $centre_bore) {
    $query->where('hubbore','>=',$centre_bore);
})->when($boltptn, function($query, $boltptn) {
    $query->where('boltpattern',$boltptn);
})...
0 голосов
/ 17 апреля 2020
$product = DB::table('products')->DISTINCT('modalid')->DISTINCT('brandid')->select('rimdiameter','modalid','modalname1','modalname2','image1','brand','minprice','maxprice');

if(isset($centre_bore)){
    $product->where('hubbore','>=',$centre_bore);
}

if(isset($boltptn)){
    $product->where('boltpattern',$boltptn);
}

if(isset($diameter)){
    $product->where('rimdiameter', $diameter);
}

if(isset($width)){
    $product->where('rimwidth', $width);
}

if(isset($frontwid)){
    $product->where('rimwidthfront', $frontwid);
}

if(isset($construct)){
    $product->where('construction', $construct);
}

if(isset($color)){
    $product->where('modalname2', $color);
}

if(isset($brand)){
    $product->where('brand', $brand);
}     

$fiter_products = $product->get(); 
0 голосов
/ 17 апреля 2020

Вы можете использовать метод whereNotNull('field). Из документов :

Метод whereNotNull проверяет, что значение столбца не равно NULL

...