如何在Laravel 4中使用参数和CASE语句进行更新查询

Blu*_*ile 2 php mysql fluent laravel laravel-4

我正在尝试创建将采用参数的mysql UPDATE查询。另外,如果该字段不为空,我想附加到该字段的末尾。为此,我正在使用CASE语句。这是我对学说的查询(来自silex):

$query = "UPDATE table SET filed = (
CASE WHEN field = ''
THEN :param1
ELSE concat(field, :param1)
END)
WHERE id=:param2";
$app['db']['test_db']->executeUpdate($sql, array('param1' => $user_text, 'param2' => $selected_id));
Run Code Online (Sandbox Code Playgroud)

现在,我想将其转换为流利的查询或原始查询,以便可以在Laravel 4中使用它。

这是我的代码:

$param1 = "String..."; // user string
$param2 = 45; // id
DB:connection('test_db')->statement("UPDATE table SET field =(
case
    WHEN field=''
    THEN $param1 
    ELSE concat(field, $param1)
END)
WHERE id=$param2");
Run Code Online (Sandbox Code Playgroud)

当我在Laravel中执行此查询时,我看到

语法错误或访问冲突:1064

任何帮助将不胜感激。

Ant*_*iro 5

尝试使用运行它raw()

DB::statement(
    DB::raw(
                "UPDATE table SET field =
                    (
                        CASE
                            WHEN field=''
                            THEN ?
                            ELSE concat(field, ?)
                        END
                    )
                    WHERE id=?"
    ),

    array($param1, $param1, $param2)
);
Run Code Online (Sandbox Code Playgroud)