无法在Laravel 4中运行原始查询

时间:2013-05-17 04:28:35

标签: laravel laravel-4

我需要在页面中显示总计数。

我可以运行这个&循环通过&得到总数

DB::table('table1')
    ->select((DB::raw('MAX(score)')))
    ->where('status', 1)
    ->groupBy('user_id')
    ->get();

但是这个查询只会在一个查询中给我一个计数。我不需要运行任何额外的循环来获得总数。

SELECT COUNT( * ) FROM (
  SELECT MAX( score ) FROM table1
  WHERE status =1
  GROUP BY user_id
) AS totalCounter

我想如何在Laravel 4中运行此RAW查询?

4 个答案:

答案 0 :(得分:9)

尝试

DB::statement( 'Your Query' );

DB::select( 'Your Query' );

答案 1 :(得分:6)

正如其他贡献者所提到的那样; -

DB::select('SQL QUERY GOES HERE WITH PARAMETERS ?, ?', array('parameter 1', 'parameter 2'));

上面的代码应该允许原始sql。

然而,

DB::table('table1')
    ->select((DB::raw('MAX(score)')))
    ->where('status','=', 1)
    ->groupBy('user_id')
    ->count();

应该为你所寻求的任务达到同样的效果,并且更符合laravels哲学。

答案 2 :(得分:2)

DB::select(DB::raw("SQL QUERY CODE HERE"))

raw和select都是必需的!

请参阅更多信息: Laravel 4: how to run a raw SQL?

答案 3 :(得分:0)

试试这个

DB::select( DB::raw("SELECT * FROM table_Name WHERE col = :somevariable"), array(
   'somevariable' => $someVariable,
 ));