Как обновить данные JSON, которые пришли из базы данных mysql, используя laravel или просто нативный php? - PullRequest
2 голосов
/ 02 октября 2019

У меня есть таблица базы данных с типом longtext, так как я изменил структуру на JSON, потому что я буду помещать туда данные JSON, и вставка там - это нормально. Моя проблема в том, что я хочу обновить часть этих данных JSON после получения их с помощью laravel / php.

Я пробовал использовать приведенный ниже код, но мне трудно это сделать.

$qtyy = $orderDetail->quantity;  
$product = Product::findOrFail($prod_id);  
$json = json_decode($product->variations, true);  
foreach ($json as $key => $value) {  
if($key == $orderDetail->variation){  
    $total = (int)$value->qty + (int)$qtyy;  
    DB::table('products')  
        ->where('id', $prod_id)  
        ->update([$value->qty => $total]);  
    }  
}  

Я хочу изменить "кол-во" в моей базе данных

{ 
   "AliceBlue-Cream":{ 
      "price":"500",
      "sku":"V-AliceBlue-Cream",
      "qty":"1000"
   },
   "Amethyst-Cream":{ 
      "price":"500",
      "sku":"V-Amethyst-Cream",
      "qty":"2998"             <- I want to update that
    }
 }

Ответы [ 2 ]

2 голосов
/ 02 октября 2019

попробуйте это, это работа для меня!

DB::table('products')  
    ->where('id', $prod_id)
    ->update([
         "Amethyst-Cream->qty" => "2998"
      ]);
0 голосов
/ 02 октября 2019

Вы можете попробовать приведение атрибутов из документов laravel:

, если ваша база данных имеет тип поля JSON или TEXT, который содержит сериализованный JSON, добавление массива, приведенного к этому атрибуту, автоматически десериализует

просто добавьте массив приведения в вашу модель с именем столбца:

protected $casts = [
        'myColumn' => 'array',
    ];

Позже, когда вы будете готовы обновить его значение:

$product = Product::find(1);
$myUpdatedColumn = $product->myColumn;
$myUpdatedColumn['qty'] = 2998;
$product->myColumn = $myUpdatedColumn;
$product->save();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...