Составьте таблицы пользователей и обучаемых следующим образом:
столбцы / поля таблицы пользователей:
- id (первичный ключ)
- имя пользователя (строка)
- роль (строка, индекс)
столбцы / поля таблицы обучаемых:
- id (первичный ключ)
- имя (строка)
- trainer_id (целое число, индекс)
- company_id (целое число, индекс)
Затем в вашей модели стажеров сделайте следующее:
public function trainer()
{
return $this->belongsTo('App\User', 'trainer_id');
}
public function company()
{
return $this->belongsTo('App\User', 'company_id');
}
В вашей Пользовательской модели выполните следующие действия:
public function trainees()
{
if($this->attributes["role"] == "company")
return $this->companyTrainees();
if($this->attributes["role"] == "instructor")
return $this->instructorTrainees();
return array();
}
public function companyTrainees()
{
return $this->hasMany('App\Trainee', 'trainer_id');
}
public function instructorTrainees()
{
return $this->hasMany('App\Trainee', 'company_id');
}
Используйте эти отношения в ваших контроллерах и других местах. Это не проверено, но оно не должно быть слишком глючным. Не забудьте заполнить базу данных действительными данными, особенно для идентификаторов.