I am creating a Laravel application and have to decide how to set up the database. I have 4 user types: Admin, Coach, Player, Parent. I'm using the Laravel default Auth tool (because it gets the job done and I like it), and as you know, it creates a Users table for you to handle passwords, emails, etc. However, each of my four user types will require other fields, and there will be very little overlap on what those fields are.
PLUS, for the Players type, there will need to be players in the players table that are NOT linked to a user (if a player is on a team but they have not signed up for an account).
My thought was this: what if I just make a new table for each user type, link it back to the default Users table via a one-to-one polymorphic relationship, and call it a day? I understand that this has been asked here (Laravel: Table structure for multiple users types, polymorphic relationships) but in this question they only lightly touch on the issue of Auth, and that is kind of a big deal for what I'm doing.
The alternative I can think of (and I've never tried this, but it sounds like a nightmare to get set up) is to somehow get Laravel to start putting passwords and emails in each of these user type-specific tables, and then when a user signs in they either have to specify their role (which would suck?) or I loop through each of the tables until we find a hit. Or don't.
Let me know what you think. I figure there might not be an absolute "best way" to do this, but I'd like to get opinions.