In general terms this is a "multi-tenant" application, that is you have one code-base that serves multiple tenants each of which may use a different subdomain or possibly entirely different domains. There's many valid ways of organizing your application to accommodate this, both internally and in how that split is expressed to your clients.
In database terms it means that you try to avoid "root level" records, that instead you always associate them with some kind of account, client, or tenant record. For example, a single-tenant site can presume that a user is always associated with the site, but in a multi-tenant system that user might be bound to one account and may only be able to log-in via a particular domain and/or URL.
Inside a framework like Laravel you might need several components to accommodate this, but it is achievable.