Я использую 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 ;
}
Так что мне придется написать код для всех ключей. это не хорошо. так что, пожалуйста, помогите мне.