我有网络应用程序(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。在一条消息中,可以提到许多用户。
答案 0 :(得分:0)
也许您可以创建类似<span value="user34">John Malkovich</span>
的内容并解析值?
或者<span data-user-id="user34">John Malkovich</span>
在语义上可能更好。
绝对没有这种东西的经验,所以不要太认真对待我;)