laravel - 使用 Eloquent 或 raw 语句删除多个 JSON 键

标签 laravel

我在我的联系人表中存储了一个 JSON 数组,并且能够使用我的 SQL 管理器运行一条语句来删除一个键,但我还没有找到任何方法将这个查询转换为 Eloquent 或原始语句:

UPDATE `contacts` SET `additional` = JSON_REMOVE(`additional` , '$."3"')

对如何在 Laravel 中运行此查询有任何想法吗?

最佳答案

$id = 3;
$jsonPath = '$."'.$id.'"';

使用原始语句

DB::statement('UPDATE contacts SET additional = JSON_REMOVE(additional, ?)', [$jsonPath];

使用查询生成器:

DB::table('contacts')
    ->update([
        'additional' => DB::raw("JSON_REMOVE(additional, '$jsonPath')")
    ]);

使用 Eloquent:

Contact::query()
    ->update([
        'additional' => DB::raw("JSON_REMOVE(additional, '$jsonPath')")
    ]);

关于laravel - 使用 Eloquent 或 raw 语句删除多个 JSON 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44186755/

相关文章:

php - Laravel - Facebook-sdk 获取用户 ID

php - 如何在 laravel 5.2 zizaco entrust :migration class name validation? 中修复

php - SQLSTATE[23000] 完整性约束冲突 : 1452 in a many-to-many relationship in laravel 5. 3

Laravel 5 错误处理

Laravel 5.4 API 在 Postman 中不返回 JSON

laravel - 问题'SQLSTATE[42S02] : Base table or view not found

php - ORM 调用应该在模型内部还是 Controller 内部?

mysql - 如何在 Laravel 5 中将列更改为 "not null"?

php - 如何在 vs 代码中自动导入 Laravel 类

php - Laravel 关系 - 尝试获取非对象的属性