データベースに必要なユーザー タイプがかなり多くありますが、これまでのところ、多数のテーブルを必要としない唯一の適切なオプションは、隣接リスト モデルを使用することです。基本的に、私のユーザーはまず、ビジネス、個人、管理者のタイプに分けられます。そこからは次のようになります。
注: 現在、3 レベルのユーザー タイプがありますが、これはビジネス ニーズに応じて変更される可能性があります。
users
すべてのユーザーは、電子メール、パスワード、名、姓などの詳細を保持する共通のテーブルを共有しています。すべてのビジネス ユーザーは、businesses
ビジネス固有のデータを格納する個別のテーブルを持っています。すべてのbusinesses
ユーザーが同じフィールドを共有しているわけではありませんが、異なるタイプのユーザーごとにいくつかのフィールドしか必要ないため、すべてのフィールドを 1 つのテーブルに格納し、使用していないフィールドには NULL を格納するのが最善の方法であると考えました。使用しないでください。
今、私はこの単純なシナリオを持っています。すべてのユーザーにユーザー プロファイル ページがあります。ビジネス ユーザーにもビジネス プロファイル ページがあります。私のビジネス技術者には、彼ら専用の別のページが必要です。コンピュータ技術者がログインするとします。プロファイル ページ、ビジネス プロファイル ページ、および技術者ダッシュボードへのリンクを表示できるようにしたいと考えています。
ユーザータイプを取得するために、「子」または「親」を取得できるようにモデルをセットアップしました。私が言うなら:
$user = new User::find(11);
$userType = $user->userType; //(relation set in the UserType & User Models)
while($userType != NULL) {
dump($userType->name);
$userType = $userType->parent; //(relation set in UserType Model)
}
// dump result:
// 11 - Computer Technician
// 5 - Technicians
// 1 - Business
技術者をチェックする (技術者ダッシュボードへのリンクを提供する) 方法と、ビジネスもチェックする (ビジネス プロファイル ページのリンクを提供する) 方法を簡単に実装するにはどうすればよいですか?