Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更新Laravel Eloquent中的JSON嵌套值_Php_Mysql_Laravel_Eloquent_Mysql Json - Fatal编程技术网

Php 更新Laravel Eloquent中的JSON嵌套值

Php 更新Laravel Eloquent中的JSON嵌套值,php,mysql,laravel,eloquent,mysql-json,Php,Mysql,Laravel,Eloquent,Mysql Json,我需要使用Laravel Eloquent更新JSON的一些嵌套值,但没有得到我想要的优化结果。下面的json需要经常更新。我对此有一个可行的解决方案,但需要对解决方案进行微调 { "a": { "b": 12, "c": 792, "d": 45, "e": { "1": { "name":

我需要使用Laravel Eloquent更新JSON的一些嵌套值,但没有得到我想要的优化结果。下面的json需要经常更新。我对此有一个可行的解决方案,但需要对解决方案进行微调

{
  "a": {
    "b": 12,
    "c": 792,
    "d": 45,
    "e": {
      "1": {
        "name": "Guna",
        "city": "city1",
        "dob": 2000
      },
      "2": {
        "name": "Raj",
        "city": "city2",
        "dob": 2001
      },
      "3": {
        "name": "Dhamu",
        "city": "city3",
        "dob": 1985
      },
      "4": {
        "name": "Bhavi",
        "city": "city5",
        "dob": 1985
      }
    }
  }
}
试码

$c_array=Json::decode($this->company->details, 1);
$c_array['a']['Player'][$p[0]]['st']=$p[1];
$c_array['a']['e'][1]['name'] = 'Bheem';
$c_array['a']['e'][1]['city'] = 'City10';
$c_array['a']['e'][2]['name'] = 'Dhanu';
$c_array['a']['e'][2]['city'] = 'City5';
$this->company()->update(['details' => Json::encode($c_array)]);
上面的代码工作正常,但在检查查询时,整个json都会更新。我只需要更新需要更新的单个密钥

我们可以使用查询生成器(DB::raw)对代码进行如下更新:

update ultimate_squad set squad=JSON_SET(details,'$.a.e."1".name','Bheem','$.a.e."1".city','City10','$.a.e."2".name','Dhanu','$.a.e."2".city','City5') where c_id=1;

您可以在mysql中创建Etritable并将整个json存储在其中 然后使用所需的specefic键运行更新查询。 阅读以下参考资料:


关于在MySQL中使用JSON的每一个问题,我在堆栈溢出上看到的都可以得到回答,“如果不使用JSON,这将更容易、更高效。”@BillKarwin我有上面提到的更新JSON值的解决方案,但需要微调是的,我明白这一点。您已经写了几乎相同的话。通过用JSON实现一个复杂的数据模型而不是普通的行和列,您正在创建一个:创建一个“可定制的系统,使其成为他们所使用的软件开发平台的副本,而且往往是一个差劲的副本”。如果您希望对其进行更精细的调整,那么您必须做的第一件事就是停止使用JSON。相反,使用普通的行和列。你可能会说,“但它必须是灵活的。”好吧,你不能让它同时如此灵活和优化。显而易见的是,我们已经有了一个表。这个答案并不能解决这个问题。