0

データベース レコードの編集モードを実装するにはどうすればよいですか?

レコード (ブログ投稿など) は、編集モード バージョンが編集、プレビュー、再編集されている間、Web サイトで公開バージョンを表示する必要があります。

これまでのところ、私は2つの解決策を念頭に置いています。

  1. ID とモードで、複数列の主キーを使用します。
  2. モードごとに別々のテーブルを使用し、それらの間でコピーします。

この機能を必要とするのは私が初めてではありません。

これは通常どのように行われますか?名前はありますか?

複数列のキーを明示的にサポートしていない CakePHP を使用していますが、ユーザーが編集を完了した後、同じ ID を持つ複数の行が実際には存在しないため、状況には関係ないと思います。

4

2 に答える 2

0

データベースに関する限り、編集モードは必要ありません。特にWeb では、http は信頼性の低いトランスポート プロトコルです。

ユーザー インターフェイスで編集が許可されている場合は、ボタンを編集して (おそらく) クリックするだけで、ボタンの「背後にある」コードが最終的に変更されたデータを UPDATE ステートメントとしてデータベースに送り返します。UPDATE ステートメントの形式が正しく、エディターとアプリケーションが十分な権限を持っている場合、UPDATE は成功し、データが変更されます。

UPDDATE の前にその特定の行を読むと、古いバージョンが表示されます。更新後にそれを読む人は誰でも、新しいバージョンを見ることができます。(可能なキャッシングの影響を無視します。)

于 2011-03-08T11:49:01.470 に答える
0

バージョン管理システムや、投稿を作成して管理者が承認するまで公開しない機能を探しているようです。これは CakePHP 固有のものではないと思いますが、できることは次のとおりです。

controller->duplicate->rename の編集機能をコピーし、編集ビューに対して同じことを行い、edits という名前の新しい db テーブルを作成します。「保存」または「公開」のドロップダウン ボックスも作成します。

次に、送信ボタンが押されたときに、$this->data のデータを表示して、投稿がどのデータベース テーブルに入力するかを決定できます。

編集機能を複製すると、投稿のIDを機能に送信することを心配する必要がないため、これが最も簡単な方法だと思います.cakeは自動的にそれを行います. したがって、posts テーブルと edits テーブルの ID は一致するはずです。

于 2011-03-08T18:00:52.633 に答える