少なくとも、すべてのログイン情報 (ユーザー名/パスワード) を users テーブルに保持する必要があります。各ユーザー タイプのデータが多少重複していると仮定すると、ユーザー テーブル (または関連する「プロファイル」テーブル) にすべてのフィールドを保持しても問題ないでしょう。
データを分離したい場合はprofile_customers
、profile_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 ステートメントを使用して関連するフィールドのみを表示することもできます。
これには非常に多くの方法がありますが、あなたの質問に対する主な答えは、保存したいデータが大幅に異なる場合を除き、おそらく同じテーブルに保持するのが最善です-少なくともユーザー名/ユーザーテーブルのパスワードまたは電子メール/パスワード。