2012-02-28 16 views
0

私はcakephpの初心者で、PHPの経験があります。 Iveはcakephp 1.3を使用し、cakephp 2.06 atmを使用しています。ユーザー登録cakephp 2?

私に迷惑をかけている質問があります。

  • 顧客
  • 小売
  • メーカー

すべての3人のユーザーが異なるフィールドいただきまし有することができることを考える:

は、私は、ユーザーの3種類のためのユーザー登録システムを作成したいですcakephpでこれを行うには?私がチェックし、/を求めることができます

  1. usersテーブルに必要なすべてのフィールドを作成し、(ユーザータイプを設定するためのフィールドで)それを使用するには、必要なデータを示しています。

  2. それぞれに3つのテーブルを作成し、それらをリンクする外部キーを作成します。

+1

データベースの疑問が増えているようですが、良いパフォーマンスを得るには、3つのタイプのユーザーすべてで同じフィールドであるかどうかを問わず、最初のメソッドを使用できます。 –

答えて

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文を使用して関連するフィールドのみを表示することもできます。

これは非常に多くの方法がありますが、あなたの質問に対する主な答えは、保存したいデータに大きな違いがないかぎり、おそらくは同じテーブルに保存するのが最善です。ユーザー名/パスワードまたは電子メール/パスワードをユーザーテーブルに保管してください。