1

データベースに必要なユーザー タイプがかなり多くありますが、これまでのところ、多数のテーブルを必要としない唯一の適切なオプションは、隣接リスト モデルを使用することです。基本的に、私のユーザーはまず、ビジネス、個人、管理者のタイプに分けられます。そこからは次のようになります。
ここに画像の説明を入力

注: 現在、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

技術者をチェックする (技術者ダッシュボードへのリンクを提供する) 方法と、ビジネスもチェックする (ビジネス プロファイル ページのリンクを提供する) 方法を簡単に実装するにはどうすればよいですか?

4

1 に答える 1