Как мы можем обновить JSon закодированное значение в базе данных с laravel? - PullRequest
0 голосов
/ 06 мая 2020

Я использую laravel 5.7. где я сохранил Json_Encoded значение в столбце online_pg_detail . вот так

[{"pg":"abc","accept_payment":"yes","details":[
      {"MerchantId":"12345"},
      {"MerchantKey":"abcvqwe"},
      {"MerchantSalt":"asdasd"} ]
  }]

Теперь я хочу обновить значение из любого ключа этого JSON. например pg, MerchantId, MerchantSalt . Я пробовал много решений, но не работал в моем случае. Я тоже использовал это решение, но не работал. это деталь единого платежного шлюза, в будущем она может быть больше 1.

\App\Cats::find(2)->update(['info->name' => 'Firball']);  

прямо сейчас я использую свой код таким же образом для обновления, но это очень сложно и занимает огромную строку.

Здесь я получаю три поля из запроса name: pg_status, value: No, pk: PayUmoney . Итак, я ищу сначала PG значение из $ req -> pk , затем ищу $ req-> name , которое я хочу обновить. в последнем оставлении остаточного значения, как они были в базе данных.

if( $college->online_pg_detail  )
         {
             foreach ( json_decode($college->online_pg_detail ,true ) as $detail )
             {
                 if(   $detail['pg'] == $req->pk )
                 {
                  if( $req->name == 'pg_status' )
                  {
                    $updated[]=[
                        "pg"=>$req->pk,
                         "accept_payment" => $req->value  ,
                         "detail"=> ["payuMerchantId" => $detail['details'][0]['payuMerchantId'] ,
                             "payuMerchantKey" => $detail['details'][1]['payuMerchantKey'] ,
                             "payuMerchantSalt" => $detail['details'][2]['payuMerchantSalt'] ]
                    ];
                  }
                 }
             }
             return $updated  ;
         }

Так что мне придется написать код для всех ключей. это не хорошо. так что, пожалуйста, помогите мне.

...