如何在Laravel 4中初始化用户定义的MySQL变量?

时间:2014-12-18 12:33:01

标签: mysql laravel laravel-4

查询我想运行需要初始化@total变量:

SET @total = 0;
SELECT ...
    @total := @total + x AS total_x,
    ...
WHERE
    @total < 1000
...

通过pma测试时查询有效,但我无法通过Laravel运行它。尝试将两个语句放入单个DB::select( $query)调用,并运行两个后续调用:

DB::statement( DB::raw( 'SET @total := 0'));
$results = DB::select( $query); // only the "select.." part here

这里的解决方法是什么?

2 个答案:

答案 0 :(得分:1)

对laravel一无所知,但从MySQL的角度来看,而不是像

这样的两个查询
SET @total = 0;
SELECT @total,
...
FROM foo
WHERE...

您可以在一个查询中执行此操作:

SELECT @total,
...
FROM foo,
(SELECT @total := 0) var_init_subquery_alias
WHERE...

希望它有所帮助。

答案 1 :(得分:0)

如果要在数据库中运行一组操作,则需要使用事务。

http://laravel.com/docs/4.2/database#database-transactions