如何在Web应用程序中的消息中存储隐藏字段?

时间:2017-01-19 13:25:27

标签: mysql database laravel

我有网络应用程序(laravel 5.3,mysql),用户可以在项目中评论任何实体(几乎每个页面都包含聊天内容)

我希望通过'@'符号添加在消息中提及其他用户的可能性(例如,“Hello,@ John,见这里”)。

当此消息发布到名为John的聊天用户时,必须获得有关新消息的通知(如果他处于离线状态,则通过电子邮件发送)。

每条消息都连接到某个页面(例如/ object / 45),因此当发送电子邮件时,用户将知道他被提及的页面。

问题是如何将其存储在数据库中?

message字段的类型为text

在此示例中,行将包含此数据“Hello,@ John,see here”(不带引号)。

问题是可能有许多用户名为“John”,所以我不能做到简单:

 select email from users where username = 'John' -- email is used as login

用户名也可以是@John Malkovich,所以如果提到“John”或“John Malkovich”,我必须解析字符串才能找到。

什么是唯一的 - 用户ID。

那么如何在数据库中存储这个?

可能的解决方案:

Hello, [user=34], see here - 数据库中的字段

在显示到Web浏览器之前解析字符串并用

替换此字符串

Hello, @John, see here

但是,显然,没有人可以在邮件中粘贴文字文本'[user = 123]',因为它会被解释为用户ID。

P.S。在一条消息中,可以提到许多用户。

1 个答案:

答案 0 :(得分:0)

也许您可以创建类似<span value="user34">John Malkovich</span>的内容并解析值?

或者<span data-user-id="user34">John Malkovich</span>在语义上可能更好。

绝对没有这种东西的经验,所以不要太认真对待我;)