0

Cakephp の初心者で、PHP の経験があります。私はcakephp 1.3を使用し、cakephp 2.06 atmを使用しています。

私を悩ませている質問があります。

3 種類のユーザーのユーザー登録システムを作成したい:

  • お客様
  • 小売業者
  • メーカー

3人のユーザー全員が異なるフィールドを持っている可能性があることを考えると、cakephpでこれを行う最良の方法は何ですか?

  1. ユーザーテーブルに必要なすべてのフィールドを作成し、それを(ユーザータイプを設定するためのフィールドとともに)使用して、必要なデータを確認して要求/表示できます。

  2. それぞれに1つずつ3つのテーブルを作成し、それらをリンクする外部キーを持っています。(複雑そうです)

4

1 に答える 1

1

少なくとも、すべてのログイン情報 (ユーザー名/パスワード) を users テーブルに保持する必要があります。各ユーザー タイプのデータが多少重複していると仮定すると、ユーザー テーブル (または関連する「プロファイル」テーブル) にすべてのフィールドを保持しても問題ないでしょう。

データを分離したい場合はprofile_customersprofile_retailers...などを使用できます。しかし、私はそれがほぼすべて異なるデータである場合にのみそれを行います-そして、ほとんどが「電話」、「電子メール」などを持っていると思います...

タイプごとに異なる登録フォームを作成する最も簡単な方法は、ユーザーのタイプに基づいて登録フォームにリンクすることです。

http://www.mysite.com/users/register/customer

次に、コントローラーで次のようにします。

function register($type = null) {
    //...
    switch($type) {
        case 'customer':
            $this->render('registration_customer');
            break;
        case 'retailer':
            $this->render('registration_retailer');
            break;
        case 'manufacturer':
            $this->render('registration_manufacturer');
            break;
    }
    //...

次に、登録ページごとに個別の CTP ファイルを作成できます。または、重複が多い場合は、コントローラーからビューに変数を渡し、if ステートメントを使用して関連するフィールドのみを表示することもできます。

これには非常に多くの方法がありますが、あなたの質問に対する主な答えは、保存したいデータが大幅に異なる場合を除き、おそらく同じテーブルに保持するのが最善です-少なくともユーザー名/ユーザーテーブルのパスワードまたは電子メール/パスワード。

于 2012-02-28T16:16:55.770 に答える