0

私のデータベース設計を見直していただけないでしょうか。私はそれが非常に自明だと思いますが、完全に明確にするために:

私の目標は、非常に柔軟なユーザー管理 (グループがツリー形式であり、グループとユーザーが habtm 関係を持っている理由) とページを構築するための非常にモジュール化された方法 (ページが構成されている理由) を備えたアプリケーションを作成することです。ウィジェットブロックの)。

ユーザーとプロファイルを別々にした理由は、users テーブルが変更されず、認証と承認にのみ必要とされるためです。ただし、プロファイル テーブルはクライアントの希望に応じて変更されます。そのため、署名がなく、代わりにアバター フィールドがある場合があります。または、完全に空になるか、まったく存在しない可能性があります。

ウィジェットは、投票、コンテンツ、ナビゲーション、コメントのコレクションなど、何でもかまいません。

名前をページに入れるのではなく、サブドメイン、ロケール、およびレイアウトを別のテーブルにすることにした理由は、クライアントが利用できるオプションを制限したいからです。レイアウト フォルダーに three-columns.ctp があるからといって、クライアントがそれを選択できるようにしたいというわけではありません。

ウィジェットも同様です。また、選択肢を制限するだけでなく、プラグイン フォルダー内のすべてのプラグイン、コントローラー、およびアクションがウィジェットであるとは限らないため、どれがウィジェットであるかを明確にする表が必要です。

ブロックは、インデックスによって決定される特定の位置のコンテナー (3 列レイアウトの右側の列など) に配置されるページ上のウィジェットです (インデックスが低いほど、高いことを意味します)。

以上が私の説明ですが、皆さんはどう思いますか?これは可能な限り良いですか?または、さらに柔軟でモジュール化するための提案はありますか。

[編集] 明確にするために言うと、ウィジェットにはもちろん、保存する必要がある情報を保存するための独自のテーブルがあります。

4

1 に答える 1

0

まあ、「プロファイル」以外はすべて素晴らしいと思います。

ログインしているユーザーからデータを取得しようとすると、次のようになります。

$this->Auth->user();

「プロファイル」に関するデータを取得するとは思わないので、$this->Auth->user('id') などでプロファイルを見つける必要があります。「プロファイル」と「ユーザー」をマージする必要があると思いますテーブルを「users」テーブルに。

したがって、たとえば「署名」を保存したい場合は、$this->request->data; に入れるだけです。$this->User->save($this->request->data); を呼び出します。署名が更新されます。

編集:

そのままにしておくこともできますが、ユーザー以外のデータを取得するには、次のようにする必要があります。

$id = $this->Auth->user('id');
$current_user = $this->User->findById($id);
于 2012-08-01T23:20:38.423 に答える