我想在我的网站上发私信。我希望该用户可以删除收到或发送的消息。为此,我需要两张表,一张用于发送消息,一张用于接收......当用户发送消息时,它是否有可能自动添加两个表?还是与表格建立一些关系更好?或者可能存在更好的解决方案?
问问题
540 次
4 回答
2
我认为你只需要一张桌子:
Message:
columns:
from: integer
to: integer
header: string(100)
body: blob
show_in_outcoming:
type: boolean
default: true
show_in_incoming:
type: boolean
default: true
is_read:
type: boolean
default: false
UserFrom:
class: sfGuardUser
local: from
foreign: id
foreignType: one
type: one
UserTo:
class: sfGuardUser
local: to
foreign: id
foreignType: one
type: one
在哪里
- is_read指示消息是否已读(false - 未读,true - 已读 - 仅用于传入消息)
如果发送消息的用户想要删除它,我们只需隐藏它(而不是从数据库中删除) - 将 show_in_outcoming 设置为 false。如果收到消息的用户想要删除它,我们也将其隐藏 - 将 show_in_incoming 设置为 false。这种方法允许我们恢复“隐藏”消息(或完全删除它们)
于 2011-06-29T14:30:58.233 回答
1
也许,您应该创建一个消息表,与用户表有两个关系:
message:
columns:
user_emitter_id: ...
user_reciever_id: ...
body: ...
relations:
userEmitter:
class: user
local: user_emitter_id
foreign: id
userReciever:
class: user
local: user_reciever_id
foreign: id
于 2011-06-29T13:43:14.097 回答
0
有一个 symfony 插件可以让你做到这一点。检查sfSocialPlugin。
于 2011-06-29T13:56:44.027 回答
0
Message:
columns:
from: integer
to: integer
header: string(100)
body: blob
show_in_outcoming:
type: boolean
default: true
show_in_incoming:
type: boolean
default: true
is_read:
type: boolean
default: false
relations:
UserFrom:
class: sfGuardUser
local: from
foreign: id
foreignType: one
type: one
UserTo:
class: sfGuardUser
local: to
foreign: id
foreignType: one
type: one
于 2013-10-16T12:17:05.097 回答