在不使用 explode 的情况下比较以逗号分隔的字符串中的数据
Compare data within a string separated by comma without using explode
有什么方法可以比较 deleted_by_id 中是否存在用户 ID,而无需通过 explode 函数直接使用 eloquent?我正在使用 laravel 4.2 顺便说一句。下面是一个示例 table:
messages
+-----------------------------+------------------+
+ id | message + deleted_by_id +
+-----------------------------+------------------+
+ 1 | hello + 65,72 +
+ 2 | thank you + 54,33,89 +
+-----------------------------+------------------+
我正在尝试比较 deleted_by_id 中是否存在用户 ID,以便消息显示在垃圾箱视图中。
您可以使用带有 LIKE
运算符的 SELECT
语句作为一种方法,但是随着用户 ID 值的增长,这会产生意想不到的结果。另一种方法是使用 MySQL
的 REGEX
特性
此外,由于您想使用 Eloquent,您可以尝试使用 Regex 的 whereRaw()
语句...
Message::whereRaw("deleted_by_id REGEX 8{1}9{1}"); //find 89
这是未经测试的,您每次都必须根据您要查找的内容更新正则表达式,但我只能看到 Eloquent.
的选项
最终,您最好的选择是重新考虑您的 table 结构,以便您可以将每个用户 ID 存储在其自己的行中。
没有like
或regex
,但是find_in_set
(我猜是MySQL):
YourModel::whereRaw('find_in_set(?, deleted_by_id)', [$user_id])->get();
显然建议 - 标准化数据库 ;)
有什么方法可以比较 deleted_by_id 中是否存在用户 ID,而无需通过 explode 函数直接使用 eloquent?我正在使用 laravel 4.2 顺便说一句。下面是一个示例 table:
messages
+-----------------------------+------------------+
+ id | message + deleted_by_id +
+-----------------------------+------------------+
+ 1 | hello + 65,72 +
+ 2 | thank you + 54,33,89 +
+-----------------------------+------------------+
我正在尝试比较 deleted_by_id 中是否存在用户 ID,以便消息显示在垃圾箱视图中。
您可以使用带有 LIKE
运算符的 SELECT
语句作为一种方法,但是随着用户 ID 值的增长,这会产生意想不到的结果。另一种方法是使用 MySQL
REGEX
特性
此外,由于您想使用 Eloquent,您可以尝试使用 Regex 的 whereRaw()
语句...
Message::whereRaw("deleted_by_id REGEX 8{1}9{1}"); //find 89
这是未经测试的,您每次都必须根据您要查找的内容更新正则表达式,但我只能看到 Eloquent.
的选项最终,您最好的选择是重新考虑您的 table 结构,以便您可以将每个用户 ID 存储在其自己的行中。
没有like
或regex
,但是find_in_set
(我猜是MySQL):
YourModel::whereRaw('find_in_set(?, deleted_by_id)', [$user_id])->get();
显然建议 - 标准化数据库 ;)