2014-12-09 3 views
0

У меня есть этот запрос в моей модели:Использование Laravel Raw Query с межтеловым

Модель:

class Webmasters { 
     public static function webmasters($filt, $cat) { 
     $top_pages = DB::table('web.tools') 
       ->where('filter',$filt) 
       ->where('category', $cat) 
       ->limit(20)->get(); 
     return $top_pages; 
} 

переменных $ ФИЛТР и $ кошки передаются в качестве параметров от контроллера.

Я хотел бы использовать запрос, как это:

class Webmaster { 
     public static function webmasters($filt, $cat) { 
     $top_pages = DB::select(DB::raw("SELECT * 
             FROM web.tools 
             WHERE filter = $filt 
             WHERE category = $cat 
             LIMIT 20")); 
      return $top_pages; 
     } 
} 

Я, однако, не теперь, как использовать эти заполнители на втором запросе. Первые из них работает как шарм, но второй один дает мне ошибку SQL из-за заполнители $ фильта и $ кошачього

ответ

2

Вы можете передать массив параметров для связывания избранных.

class Webmaster { 
     public static function webmasters($filt, $cat) { 
     $top_pages = DB::select(DB::raw("SELECT * 
             FROM web.tools 
             WHERE filter = :filter 
             AND category = :category 
             LIMIT 20"), [ 
              ':filter' => $filt, 
              ':category' => $cat 
             ]); 
      return $top_pages; 
     } 
} 
+0

Я уже пробовал это, но я постоянно получаю ошибку SQLSTATE 42601, указывающую на предложения where. –

+0

Ваш исходный запрос имеет 2 WHERE ... вы хотите WHERE filter =: filter AND category =: category. –

+0

Thats it. Извините за тривиальную ошибку. –

Смежные вопросы