Синхронизация принадлежит в сводной таблице - PullRequest
0 голосов
/ 06 апреля 2020

A User в моем приложении может выполнять одну из следующих ролей:

  • Администратор
  • Менеджер
  • Продавец

A Manager может иметь ноль или несколько salespersons.

A Salesperson может иметь ноль или один manager.

У меня есть логика c, рассчитанная для Manager -> salespersons:

Schema::create('manager_salespersons', function (Blueprint $table) {
    $table->id();
    $table->integer('manager_id'); // manager user->id
    $table->integer('salesperson_id'); // salesperson user->id
});

И:

public function salespersons()
{
    return $this->belongsToMany(User::class, 'manager_salespersons', 'manager_id', 'salesperson_id');
}

Это прекрасно работает с методом sync: $user->salespersons()->sync($request->input('salespersons'));

Я изо всех сил пытаюсь понять, как правильно реализовать Salesperson -> manager logi c. Вот что у меня есть:

public function manager()
{
    return $this->belongsTo(User::class)->withDefault(['name' => 'N/A']);
}

Теперь это работает, только если у меня есть запись manager_id в таблице users, но я не хочу управлять отдельным вещь для этого. Я хочу получить manager для Salesperson через таблицу manager_salespersons.

Как мне сделать это правильно? Я ищу что-то вроде belongsToOne. Пример того, как синхронизировать c, также будет идеальным.

Должен ли я просто иметь отношение managers, а затем отношение manager, которое получает первый результат из managers?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...