Как правильно создать структуру таблиц `работники 'или как правильно создавать Eloquent Relationships в Laravel? - PullRequest
0 голосов
/ 29 июня 2018

У меня есть образец workers структура таблицы:

Workers table structure in Laravel project

У меня есть два типа работников: сотрудники компании и сотрудники филиалов компании . Тип поля может быть только: 1 или 2 . 1 - работник компании, 2 - работник филиала. Как теперь я не могу написать правильный метод отношений, чтобы получить тип компании пользователя (филиал или компания). Или я должен создать 2 таблицы (company_workers_table и company_branch_workers_table) для правильной записи красноречивых связей?

1 Ответ

0 голосов
/ 29 июня 2018

Вы ищете полиморфные отношения:

https://laravel.com/docs/5.6/eloquent-relationships#polymorphic-relations

Вы хотите настроить ваших работников с двумя столбцами вместо одного типа, давайте назовем это отношение workplace. Ваша таблица workers будет иметь столбцы workplace_id и workplace_type. Столбцы типа содержат класс связанной модели (т. Е. App/Company), а столбец идентификатора содержит идентификатор связанной модели, поэтому работник может быть связан либо с компанией, либо с филиалом компании.

Ваши модели будут выглядеть примерно так:

class Worker extends Model
{
    public function workplace()
    {
        return $this->morphTo();
    }
}

class Company extends Model
{
    public function workers()
    {
        return $this->morphMany('App\Worker', 'workplace');
    }
}

class Branch extends Model
{
    public function workers()
    {
        return $this->morphMany('App\Worker', 'workplace');
    }
}
...