在 MySQL JSON 字段中的数组中搜索值(Laravel/Lumen)[重复]
Posted
技术标签:
【中文标题】在 MySQL JSON 字段中的数组中搜索值(Laravel/Lumen)[重复]【英文标题】:Searching for value within an array in MySQL JSON fields (Laravel/Lumen) [duplicate] 【发布时间】:2018-07-25 10:51:39 【问题描述】:我在 mysql JSON 字段的数组(图像路径)中搜索值时遇到问题。我想检查图像的路径是否存储在数据库中以防止删除文件。
我尝试过的控制器功能:
public function checkImage($filename)
$content = Content::whereRaw('JSON_CONTAINS(images->"$.path", lAeH88gIv4HeycQXHeMbT8yOyydybbOVhsSq9eAx.jpeg')->exists();
$content = Content::whereRaw('json_contains(images->path, \'["lAeH88gIv4HeycQXHeMbT8yOyydybbOVhsSq9eAx.jpeg"]\')')->exists();
$content = Content::whereRaw('json_contains(images->path, \'["' . $filename . '"]\')')->exists();
$content = Content::whereRaw('json_contains(images, \'["' . $filename . '"]\')')->exists();
return response()->json($content);
示例 JSON:
"id": 4,
"images": [
"path": "abc/abc123.jpg",
"caption": "text",
"credits": "text"
,
"path": "abc/xyz123.jpg",
"caption": "text",
"credits": "text"
,
"path": "abc/827364527.jpg",
"caption": "text",
"credits": "text"
],
"created_at": "2017-12-20 11:40:16",
"updated_at": "2018-01-04 12:46:37"
【问题讨论】:
出了什么问题?你期望会发生什么?有错误信息吗?请提供minimal reproducible example。 【参考方案1】:我找到了解决办法。在我的控制器功能下方:
public function checkIfImageExists()
$content = Content::where('images', 'like', '%image-name-123.jpg%')->exists();
return response()->json($content);
如果图像在数据库 JSON 字段中使用,则函数返回 true。如果不使用则为 False。
【讨论】:
以上是关于在 MySQL JSON 字段中的数组中搜索值(Laravel/Lumen)[重复]的主要内容,如果未能解决你的问题,请参考以下文章
sql 从MySQL中JSON编码字段中的另一个数组中的数组中获取所有值。
mysql数据库中某个字段存的是json数据,如何对json数据中的数据进行操作?