Лучший способ, который я могу придумать, - использовать много-много полиморфных отношений.
Поскольку Пользователь может быть как агентом, так и клиентом, мы создадим таблицу пользователей и создадим другую таблицу, а затем назовите ее пользовательской таблицей, которая поможет отобразить пользователей как для агента, так и для клиента.
userable таблица будет иметь эти поля
user_id - integer
userable_id - integer
userable_type - string
user_id проведет идентификатор пользователя, то userable_id будет содержать либо агент или идентификатор клиента и userable_type содержит имя агента или Custmoer Модель класса
Модель пользователя
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
public function agents()
{
return $this->morphedByMany('App\Agent', 'userable');
}
public function customers()
{
return $this->morphedByMany('App\Customer', 'userable');
}
}
Агент Модель
namespace App;
use Illuminate\Database\Eloquent\Model;
class Agent extends Model
{
public function users()
{
return $this->morphToMany('App\User', 'userable');
}
}
Клиент Модель
namespace App;
use Illuminate\Database\Eloquent\Model;
class Customer extends Model
{
public function users()
{
return $this->morphToMany('App\User', 'userable');
}
}