Hey, interesting question.
If you can, I would suggest that you re-think your architecture a little. To me it would be simpler to have a table for users and a table for tasks (like you so far) but, the tasks would have a column "special" that is false by default.
In your migration for tasks table:
$table->boolean('special', false);
and then for your relationships: In User:
public function tasks() {
return $this->hasMany(Task::class);
}
public function normalTasks() {
return $this->tasks->where('special', '=', false);
}
public function spacialTasks() {
return $this->tasks->where('special', '=', true);
}
Now the trick is then to check how many normal/special task you have on a user when creating a new task. Then deciding wether to create a new one or not. To know how many tasks you have: $user->normalTasks->count() :D
Sorry if the where conditions are off, I did it on top of my head but I'm sure you get the idea