首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel 8 upsert with DB::Raw查询

Laravel 8 upsert with DB::Raw查询
EN

Stack Overflow用户
提问于 2020-11-19 04:04:09
回答 1查看 510关注 0票数 0

我希望使用Laravel 8的本地upsert功能来导入一批产品。当使用包https://github.com/staudenmeir/laravel-upsert时,例如,当DB模型中不存在镜像时,我可以使用以下命令来更新镜像:

代码语言:javascript
运行
复制
Product::upsert(
    $values,
    $target,
    [
        'image' => DB::raw("if(`image` is null, values(`image`), `image`)"),
        // TODO: Add the other columns that should be updated.
    ]
);

然而,这似乎在Laravel 8的upsert版本中不起作用。我该怎么做,有什么建议吗?

更新:我目前正在尝试的代码是:

代码语言:javascript
运行
复制
ShopProduct::upsert(
    $productArray,
    ['productcode'],
    [
       'image' => DB::raw("if(`image` is null, values(`image`), `image`)"),
    ]);

我得到的错误是:

代码语言:javascript
运行
复制
SQLSTATE[HY000]: General error: 1 near "values": syntax error (SQL: insert into "shop_products" ("created_at", "image", "name", "productcode", "slug", "updated_at") values (2020-11-18 21:52:03, /var/folders/y_/whnvprxj6hx514qmgwj_lb740000gn/T/cf46d09ad8845c9ff742a9045090d252.png, tempora, 6011295759374531, tempora, 2020-11-18 21:52:03), (2020-11-18 21:52:03, /var/folders/y_/whnvprxj6hx514qmgwj_lb740000gn/T/d0842fcf4ea08a4dab9f82e9456fdd36.png, qui, 4024007178334, qui, 2020-11-18 21:52:03) on conflict ("productcode") do update set "image" = if(`image` is null, values(`image`), `image`), "updated_at" = "excluded"."updated_at")
EN

回答 1

Stack Overflow用户

发布于 2021-07-02 08:12:39

我使用这个函数让事情变得更简单:

代码语言:javascript
运行
复制
protected function coalesce(array $columnNames):array{
        $columns = [];
        foreach($columnNames as $value){
            $columns["{$value}"] = DB::raw("COALESCE(`{$value}`,values(`{$value}`))");
        }
        return $columns;
    }


ShopProduct::upsert(
    $productArray,
    ['productcode'],
    $this->coalesce(['image]));

Coalesce将接受列的值或传递的值,具体取决于是否为null

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64900542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档