В настоящее время я сталкиваюсь с проблемой, которая заставляет меня переосмыслить, если я иду по правильному пути.Для примера, у меня ограниченное пространство для маневра с точки зрения ре-архитектуры, но выслушаю меня.
У меня есть две модели, которые ссылаются на одну и ту же таблицу, разные типы «Пользователи».
Провайдер:
class Provider extends User
{
protected $table = 'users';
protected static function boot()
{
parent::boot();
static::addGlobalScope('user_type', function (Builder $builder) {
$builder->where('type', '=', 'provider')->orWhere('type', '=', 'admin');
});
}
}
Пользователь:
class User extends Authenticatable
{
...normal user items
}
Это может показаться странным, но Провайдер может «владеть» любым количеством пользователей через столбец «provider_id».Провайдер также может владеть другим провайдером через provider_id.Я пытаюсь создать отношения, в которых «родительский» поставщик (тот, кто владеет другим поставщиком) может получить доступ к принадлежащим «дочернему» поставщику.
Я пытаюсь использовать hasManyThrough, но продолжаю сталкиваться со следующимошибка:
Syntax error or access violation: 1066 Not unique table/alias
Мои отношения выглядят так:
class Provider extends User
{
protected $table = 'users';
protected static function boot()
{
parent::boot();
static::addGlobalScope('user_type', function (Builder $builder) {
$builder->where('type', '=', 'provider')->orWhere('type', '=', 'admin');
});
}
public function childSavers() {
return $this->hasManyThrough(User::class, Provider::class, 'provider_id', 'provider_id', 'id', 'id');
}
}
Насколько я знаю, это потому, что я пытаюсь развернуться на той же таблице, но как еще можно определитьэто отношения?
Спасибо!