У меня есть таблица пользователей, где каждому пользователю может быть назначен менеджер. У меня есть 3 типа Менеджеров (Региональный менеджер, Региональный менеджер и Менеджер флота). Один региональный менеджер может иметь много менеджеров флота и странового менеджера, а один региональный менеджер может иметь много менеджеров флота. В моей таблице пользователей есть столбцы fleet_manager_id, country_manager_id, area_manager_id, которые ссылаются на id таблицы пользователей. Вопрос в том, что я не знаю, как установить полиморфные отношения на одной и той же таблице.
Миграция:
Schema::table('users', function (Blueprint $table) {
$table->integer('fleet_manager_id')->unsigned()->nullable();
$table->foreign('fleet_manager_id')->references('id')->on('users');
$table->integer('country_manager_id')->unsigned()->nullable();
$table->foreign('country_manager_id')->references('id')->on('users');
$table->integer('area_manager_id')->unsigned()->nullable();
$table->foreign('area_manager_id')->references('id')->on('users');
});
Моя модель пользователя:
public function fleetManagers()
{
return $this->hasMany(User::class, 'fleet_manager_id');
}
public function countryManager()
{
return $this->belongsTo(User::class, 'country_manager_id');
}
public function areaManager()
{
return $this->belongsTo(User::class, 'area_manager_id');
}