The last thing before we start working on the Flutter mobile application is that we want multi-tenancy for our Users. In our case, we want the easiest multi-tenancy option - user_id
filtering. So, let's implement the following:
- Global scopes for Category and Transaction models
- Refactoring of Category and Transaction controllers to create records for our user
These are small changes, but they will make our application multi-tenant. Let's start with the global scope.
Global Scopes for Category and Transaction Models
Let's start with a quick overview of our logic:
- On our Models, we have a
user_id
column that relates to the User - We want to apply a global scope to our Models to filter records by
user_id
- This should be done automatically when we query our Models
Let's implement this in our Category model:
app/Models/Category.php
use Illuminate\Database\Eloquent\Builder; // ... protected static function booted(): void{ if (auth()->check()) { static::addGlobalScope('by_user', function (Builder $builder) { $builder->where('user_id', auth()->id()); }); }}
And we can do exactly the same ...