Я пытаюсь создать mysql UPDATE-запрос, который будет принимать параметры. Кроме того, я хочу добавить в конец поля, если поле не пусто. Для этого я использую оператор CASE. Вот мой запрос в доктрине (от силекса):
$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));
Теперь я хочу преобразовать его в свободный или сырой запрос, чтобы я мог использовать его в 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");
Когда я выполняю этот запрос в Laravel, я вижу
Ошибка синтаксиса или нарушение доступа: 1064
Любая помощь будет оценена.
Попробуйте запустить его с помощью raw()
:
DB::statement( DB::raw( "UPDATE table SET field = ( CASE WHEN field='' THEN ? ELSE concat(field, ?) END ) WHERE id=?" ), array($param1, $param1, $param2) );