Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.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雄辩-在PostgreSQL中更新JSON列时遇到问题_Php_Json_Postgresql_Eloquent_Jsonb - Fatal编程技术网

Php Laravel雄辩-在PostgreSQL中更新JSON列时遇到问题

Php Laravel雄辩-在PostgreSQL中更新JSON列时遇到问题,php,json,postgresql,eloquent,jsonb,Php,Json,Postgresql,Eloquent,Jsonb,第1部分:主要问题 在我的colors\u选项卡表(PostgreSQL 9.6)中,我有一个名为colors\u json\u col的JSONB类型的列。 我的Laravel控制器中有以下代码,可在上述表格中创建新记录: $colour_rec = new ColoursModel(); $colour_rec -> colours_json_col = ['fruits' => ['apple' => 'pink'] ]; $colour_rec -> update

第1部分:主要问题

在我的
colors\u选项卡
表(PostgreSQL 9.6)中,我有一个名为
colors\u json\u col
的JSONB类型的列。 我的Laravel控制器中有以下代码,可在上述表格中创建新记录:

$colour_rec = new ColoursModel();
$colour_rec -> colours_json_col = ['fruits' => ['apple' => 'pink'] ];
$colour_rec -> update (['colours_json_col->fruits->apple' => 'green']);
$colour_rec -> saveOrFail();
上述代码不会出错或引发异常,但执行后,我的数据库中的新记录包含以下JSON数据:

{"fruits": {"apple": "pink"}}
显然,我想要的是苹果是绿色的,而不是粉红色的!这里的文档()表明我正在做正确的事情,以便将其设置为“绿色”。有人能看出我做错了什么吗

第2部分:奖金问题

为了防止上述代码出错,我不得不在模型中将列
colors\u json\u col
声明为
$filleble

protected $fillable = ['colours_json_col'];

如果可能的话,我真的不想将列设置为
$filleble
。因此,是否有一种方法可以在不调用
update()
函数的情况下更新值?

一次回答问题的两部分:

$colour_rec = new ColoursModel();
$colour_rec -> colours_json_col = ['fruits' => ['apple' => 'pink'] ];
$colour_rec -> setAttribute ('colours_json_col->fruits->apple', 'green');
$colour_rec -> saveOrFail();
据我所知,这似乎是一个雄辩的未记录功能