CakePHP PrivateMessage架构和关联
我以为我找到了解决问题的方法,但是,我的做法并不符合我的所有需求。因此,我诉诸你的建议。这基本上是我想要实现的目标:
我有3个数据库表:
用户:id,username,...
private_messages:id,...
private_messages_users:id,private_message_id,sender_id,recipient_id,status
查看此数据库模式,您会注意到,对于每条消息,我在连接表中创建了一行,这意味着如果我向两个收件人发送邮件,则连接表中将有两个插入的行。如果你有更好的方法,我愿意接受建议。
我需要定义关联以便:
能够撰写信息;在撰写表单中,我想有一个多列表,我可以从中选择我想要发送邮件的收件人;发送者在这里并不重要,因为我会在保存前手动将其添加到$ this-> data数组中
能够创建一个收件箱和一个已发送的文件夹,我将分别获取收到的所有收到的邮件
能够查看已发送的消息以及发送给它的所有收件人
能够在用户第一次查看时将消息标记为已读
另外,对于每个sender_id和recipient_id,我想从users表中获取用户名
我希望所有请求的操作都是'cakily'完成的,这意味着没有'hacks'或方法来转换数组。只是简单的操作,完全基于创建的关联。
任何帮助都将受到高度赞赏,因为我正在努力解决这个问题一个多星期。非常感谢你!
没有找到相关结果
已邀请:
1 个回复
淑灯
hasMany
然后创建一个代表你的HABTM表的
模型。在该表中,您将有一个名为
的列,表示收件人是否以及哪个收件人已阅读该邮件。 这里有一些SQL可以运行来设置我正在谈论的内容的示例,以便您可以想象这个想法。
我使用UUID作为一切,因此
列。 所以让我们说一个用户,“Bob”发送一封电子邮件给“Sally”和“Bill”,将有一条记录放入
,链接回“Bob”作为创建者。然后在
中会有两条记录将特定的
记录与“Sally”和“Bill”相关联 现在,如果“Sally”读取消息,则特定的
记录将其
列更改为1 - 表示她已阅读该消息。 “鲍勃”的记录将保持为0 - 表示他没有阅读。 要在HABTM表上执行更改,您需要为其创建模型。 CakePHP书谈到了这一点,特别是关系的
选项。