【问题标题】:Cannot run raw Query in Laravel 4无法在 Laravel 4 中运行原始查询
【发布时间】:2013-05-12 04:06:34
【问题描述】:

我需要获取总计数才能显示在我的页面中。

我可以运行它并循环并获取总数

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 查询?

【问题讨论】:

    标签: laravel laravel-4


    【解决方案1】:

    试试

    DB::statement( 'Your Query' );
    

    或

    DB::select( 'Your Query' );
    

    【讨论】:

      【解决方案2】:
      DB::select(DB::raw("SQL QUERY CODE HERE"))
      

      raw 和 select 都是必需的!

      请查看更多信息: Laravel 4: how to run a raw SQL?

      【讨论】:

        【解决方案3】:

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

        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();
        

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

        【讨论】:

          【解决方案4】:

          试试这个

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

          【讨论】:

            猜你喜欢
            • 2019-04-27
            • 2021-06-24
            • 1970-01-01
            • 2013-09-27
            • 2013-07-11
            • 2013-01-19
            • 2017-11-13
            • 1970-01-01
            • 2018-08-21
            相关资源
            最近更新 更多