0

私はDoctrineでsymfony1.4.11を使用しています。私は自分のサイトにプライベートメッセージを持っています、そして私は可能性を作りたいです、そのユーザーはメッセージに「返信」することができます。「編集」方法を変更してみましたが、今はそうはいきません。作り方は?

$this->forward404Unless(
    $messages = Doctrine_Core::getTable('Messages')->find(array($request->getParameter('id'))),
    sprintf('Object messages does not exist (%s).', $request->getParameter('id'))
);

$messages->setMessage('') ;
$messages->setTitle('Re:'.$messages->getTitle()) ;  
$messages->setRecipientId($messages->getSenderId()) ;
$this->form = new MessagesForm($messages);

しかし、それは新しいメッセージを作成せず、編集するだけです...

4

2 に答える 2

3

返信アクションを追加します。

public function executeReply(sfWebRequest $request)
{
  $originalMessage = Doctrine_Core::getTable('Messages')->find(array($request['id']));
  $this->forward404Unless($originalMessage, sprintf('Object messages does not exist (%s).', $request['id']));

  $reply = new Message();
  $reply->setTitle('Re:'.$originalMessage->getTitle());  
  $reply->setRecipientId($originalMessage->getSenderId());
  $this->form = new MessagesForm($reply);
}

その他の注意事項:

  • 既存の新しいアクションを変更し、チェックを追加して、元のメッセージIDが提供されているかどうかを確認できます。
  • オブジェクトに常に単数で名前を付けるのはデータベースの規則です。したがって、モデルはメッセージではなくメッセージと呼ばれる必要があります。
  • コピーする必要のある元のメッセージのプロパティが多数ある場合は、新しいメッセージを作成する代わりに、のcopyメソッドを使用できます。Doctrine_Record
  • メッセージの返信内容を追跡できるように、dxbで説明されているように自己関係を追加することをお勧めします。要件に応じて、スレッドと返信の両方を追跡することをお勧めします。
于 2011-07-04T17:28:53.430 に答える
1

おそらく、自己参照テーブル メッセージを設計する必要があります。返信は、前のメッセージを参照する新しいメッセージです。

http://www.doctrine-project.org/projects/orm/1.2/docs/manual/defining-models/ru#relationships:join-table-associations:self-referencing-nest-relations:equal-nest-relations

于 2011-07-04T15:57:50.723 に答える