首页 > 解决方案 > 如果值不为空,Laravel 将 DB::Raw 与 Concat 一起使用

问题描述

我需要在 Laravel 更新查询中连接值。如果 Id 值为 12,如果我需要将 14 附加到它,它应该是 12,14。如果 ID 值为空,那么它应该附加为 14 而不是 ,14。我使用了以下代码,

$inscustrec =DB::table('configure')->where('POST_ID', $request->postid)
        ->update(
        [
             'ID' => DB::raw('CONCAT(COALESCE(ID),",'. $insrec.'")')
          ]);

如果 ID 值为空,我将逗号作为第一个字符。

我尝试了以下代码,

$inscustrec =DB::table('configure')->where('POST_ID', $request->postid)
    ->update(
    [
         'ID' => trim(DB::raw('CONCAT(COALESCE(ID),",'. $insrec.'")'),",")
      ]);

但是这段代码不起作用。

任何帮助将不胜感激。

标签: phplaravel

解决方案


试一试(不确定您的 SQL 变体,我的示例使用的是 MySQL):

$inscustrec = DB::table('configure')->where('POST_ID', $request->postid)
->update([
    'ID' => trim(DB::raw('CONCAT_WS(",", COALESCE(ID, "'. $insrec.'"))'))
]);

希望$insrec不是来自用户输入,因为它直接插入到 SQL 中。


推荐阅读