2016-01-03 2 views
0

Я пытаюсь преобразовать этот tradtional sql запрос в larvael/lumen построитель запросов и работает в кирпичных стенах.Lumen/Laravel query builder - BETWEEN

$query = "SELECT a.id, a.name, a.cuisine, a.status, a.new, a.addressLine1, a.addressLine2, a.addressLine3, a.city, a.weekendot, a.weekendct, b.class 
    FROM restaurants a, restaurants_class b 
    WHERE a.class = b.id 
    AND '$date' = CURRENT_DATE 
    AND '$ntime' BETWEEN a.weekendot AND a.weekendct 
    ORDER BY id DESC"; 

$date и $ntime являются переменными.

Это то, что у меня есть до сих пор;

$posts = DB::connection('web') 
     ->table('restaurants') 
     ->join('restaurants_class', 'restaurants.class', '=', 'restaurants_class.id') 
     ->select('restaurants.*', 'restaurants_class.*') 
     ->get(); 

Первый AND заявление не получает ничего от DB

Второе AND утверждение сравнении всего var на две колонки в DB

Не уверен, как реализовать whereBetween

ответ

0

Это совершенно непроверено, но я думаю, что ваш лучший выбор - использовать метод whereRaw как y ou имеют переменные, которые не позволят вам использовать метод whereBetween.

Я также предполагаю, что переменными $date и $ntime являются переменные PHP, а не переменные MySQL.

$posts = DB::connection('web') 
     ->table('restaurants') 
     ->join('restaurants_class', 'restaurants.class', '=', 'restaurants_class.id') 
     ->whereRaw('? = CURRENT_DATE', $date) 
     ->whereRaw('? BETWEEN a.weekendot AND a.weekendct', $ntime) 
     ->select('restaurants.*', 'restaurants_class.*') 
     ->get();