自分のサイトでプライベート メッセージを作成したい。ユーザーが受信または送信したメッセージを削除できるようにしたい。そのためには、送信メッセージ用と受信用の 2 つのテーブルが必要です。ユーザーがメッセージを送信すると、2 つのテーブルから自動的に追加される可能性はありますか? または、テーブルとの関係を作成する方が良いですか? それともより良い解決策が存在しますか?
4 に答える
2
テーブルが1つだけ必要だと思います:
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 - 既読 - 着信メッセージのみ)
メッセージを送信したユーザーがメッセージを削除したい場合は、単に非表示にします (DB から削除するのではなく) - 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 に答える