我想在我的网站上发布私信。我希望该用户可以删除收到或发送的消息。为此我需要两个表一个用于发送消息,一个用于接收....是否可能当用户发送消息时,它会自动添加两个表?或者最好与桌子建立一些关系?或者可能存在更好的解决方案?
答案 0 :(得分: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
,其中
如果发送消息的用户想删除它,我们只需隐藏它(不是从数据库中删除) - 将show_in_outcoming设置为false。 如果收到该消息的用户想要将其删除,我们也将其隐藏 - 将show_in_incoming设置为false。这种方法允许我们恢复“隐藏”消息(或完全删除它们)
答案 1 :(得分: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
答案 2 :(得分:0)
有一个symfony插件可以让你这样做。检查sfSocialPlugin。
答案 3 :(得分: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