首页 > 解决方案 > 从 laravel/php 中的 mysql 列数组值中查找单个值

问题描述

我想从带有逗号分隔字段的数组中找出值。这是我的表结构

╔════╦══════════════╗
║ id ║ columnA ║
╠════╬══════════════╣
║ 1 ║ [1,2,3,4,5] ║
║ 2 ║ [6,2,4,5,8] ║
╚════╩══════════════╝

如果我提供“1”并且 columnA 与该数组中的 1 值匹配,则获取该行。

<?php

return $val = Model::where(1 exists in ColumnA then fetch this row)->first/get();

?>

标签: phpmysqllaraveleloquent

解决方案


正如上面评论中提到的,这不是解决这个问题的方法。您需要两个表来以适当的方式管理它。

PARENT:
╔════╗
║ id ║
╠════╣
║  1 ║
║  2 ║
╚════╝

CHILD:
╔════╦══════════════╦══════════════╗
║ id ║  parent_id   ║  value       ║
╠════╬══════════════╬══════════════╣
║  1 ║ 1            ║ 1            ║
║  2 ║ 1            ║ 2            ║
║  3 ║ 1            ║ 3            ║
║  4 ║ 1            ║ 4            ║
║  5 ║ 1            ║ 5            ║
╚════╩══════════════╩══════════════╝

使用此设置,您可以轻松地在父项上找到单个值,而无需提取多个值并在 PHP 中查看它们。

您需要阅读 Eloquent Relationships 才能完成这项工作,如您展示的示例所示。查看 Laravel 文档。我相信你已经把它加了书签。应该有道理。祝你好运。


推荐阅读