Laravel - Quick Tips

How to Use Laravel Model Events on Pivot Tables

In a Laravel app, you may want to assign users to tasks while also tracking who assigned each user to a task. By utilizing Laravel's model events on pivot tables, this is easily achievable.

To begin, create three tables. One for tasks, one for users, and one for assigning users to tasks: task_user. Then, create the corresponding TaskUser pivot model using the following command:

php artisan make:model TaskUser --pivot

Next, add event handlers to the TaskUser model by adding the following code:

class TaskUser extends Pivot
    protected static function booted()
        static::creating(function ($pivot_model) {
            // ...
        // + any other event handler

Now, it's important to let Laravel know which model it should use for the pivot table. This is achieved by adding the following code to the User model:

public function tasks()
    return $this->belongsToMany(Task::class)

Finally, you can assign users to tasks using the attach method on the user's tasks relationship, like so:


With these steps, your event callbacks or corresponding observer methods will be executed as expected. You now have a fully functional way to assign users to tasks while also tracking who assigned them.

Read more Articles