json - Laravel 8 在数据库中手动保存 JSON
问题描述
当我将产品保存到我的数据库列图像时,JSON 列中的所有内容都已正确填充:
[
{
"path": "/uploads/n2R9y4l977/20210104_125201.jpg",
"index": "0"
},
{
"path": "/uploads/n2R9y4l977/20201222_144730.jpg",
"index": "1"
}
]
所以我接下来要做的是通过检查给定数据是否与索引匹配来删除该列中的一行。所以我做了以下事情:
$newImage = [];
$product = product::where(["id" => $product_id])->first();
//$product = product::find($product_id); gives the same result
$originalProduct = $product->images;
foreach($originalProduct as $key => $images) {
if ($images->index == $index) {
unset($originalProduct[$key]);
}
}
foreach($originalProduct as $key => $image) {
$newImage[$key] = array("index" => "".$key, "path" => $image->path);
}
$product->images = $newImage;
$product->save(); //also tried $product->update();
这给了我这个:
{
"1": {
"path": "/uploads/n2R9y4l977/20201222_144730.jpg",
"index": "1"
}
}
产品型号有一个演员表:
protected $casts = [
'images' => 'object',
];
但我需要它与我第一次将其保存到数据库时完全一样。我该怎么做呢?
解决方案
您可以使用以下内容获取没有演员表的 json:
$originalProduct = $product->getRawOriginal(‘images’);
或者,如果这不会破坏其他地方的功能,您可以将强制转换更改为数组:
protected $casts = [
‘images’ => ‘array’
];
推荐阅读
- jquery - 当我单击我选择的最后一张图片时,我也提交了 jquery 文件上传
- python - Django IntegrityError NOT Null 约束失败 reqs_student.section_id
- java - Kafka Mirror Maker 执行地点
- ipc - 如何解决 Open VMS Web 服务集成工具包 (WSIT) 中的 IPC 错误
- c++ - c++(我的代码卡在第一个函数中)
- github-api - 我可以通过 GitHub API 添加新的分支保护规则吗?
- c - 串行编程 - Termios。从设备读取 0x00 字节时卡住
- macos - ElasticSearch 5.6 无法在 Mac OS 上启动
- python - 正则表达式 Python - 仅保留 ASCII 和版权符号
- laravel - 使用 Mockery 进行单元测试返回 false