@kevinv A user is a user. When you start creating tables for each “type” of user, you then have to create multiple authentication views, guards, etc for each type of user, and that work only grows exponentially the more types of users you add.
In your example, I wouldn’t even use roles. A user registers on the site, and can either book to stay at a property or create a property for listing. You can have different landing pages for saying or renting, but it would still just create a row in your users table. You can then optionally show property management-based links in the user’s account area if they have any properties. If they do, they see the links. If they don’t have any properties, they don’t see the links:
@if($user->properties()->exists())
<a href="{{ route('admin.property.index') }}">Manage properties</a>
@endif
These are known as “multi-sided marketplaces” and I run one myself (a video on demand marketplace). Users can sign up to sell videos, and users can also sign up to watch these videos. But in the application, users are users. A single user can both create a channel to sell videos, as well as rent videos from other channels on the marketplace.