2016-11-20 70 views
0

,這是什麼的Laravel雄辯查詢:Laravel 5:whereRaw逃到字符串整數

select * from `jobs` where (
     400000 between min_salary and max_salary 
      or 
     600000 between min_salary and max_salary 
); 

我嘗試了以下它封裝到字符串的整雄辯查詢

$min = 400000; 
$max = 600000; 
Job::whereRaw(' 
    ? between min_salary and max_salary 
     or 
    ? between min_salary and max_salary', 
    [$min,$max] 
)->get(); 

也試過連鑄DB :: Raw沒有任何選項按預期工作。

protected $casts = [ 
    'min_salary' => 'integer', 
    'max_salary' => 'integer', 
]; 

$min = 400000; 
$max = 600000; 
Job::whereRaw(' 
    ? between min_salary and max_salary 
     or 
    ? between min_salary and max_salary', 
    [DB::Raw($min),DB::Raw($max)] 
)->get(); 

我想下面的雄辯查詢工作正常,但我已經硬編碼查詢直接(不安全)

$min = 400000; 
$max = 600000; 
Job::whereRaw(
    $min.' between min_salary and max_salary 
    or 
    '.$max.' between min_salary and max_salary' 
)->get(); 

回答

3

試試這個:

Job::where(function($query){ 
    $query->where('min_salary','<',400000); 
    $query->where('max_salary','>',400000); 
})->orWhere(function($query){ 
    $query->where('min_salary','<',600000); 
    $query->where('max_salary','>',600000); 
})->get();