Получить имя пользователя из таблицы пользователей для каждого члена команды - PullRequest
1 голос
/ 05 мая 2019

Я сталкиваюсь с некоторыми проблемами при установлении отношений между моделями пользователей, кланов и членов кланов.У меня есть три модели, в которых я определил отношения как ...

Модель клана

public function clanMembers() {
    return $this->hasMany('App\ClanMember', 'clan_id', 'clan_id');
}

Модель ClanMember

public function clan() {
    return $this->belongsTo('App\Clan', 'clan_id', 'clan_id');
}

Я пытаюсь получить информацию о клане запрашиваемого пользователя и его других членов клана.Я использую следующее:

$clanMembers = ClanMember::find(Auth::user()->id)->clan()->with('clanMembers')->get();

Исходя из вышесказанного, я получаю правильный ответ.

"data": [
        {
            "id": 2,
            "clan_leader_id": 3,
            "clan_name": "@rockers1",
            "clan_avatar": "",
            "game_id": 1,
            "max_members_count": 50,
            "clan_id": "1505ccd15b01",
            "created_at": "2019-05-04 04:31:44",
            "updated_at": "2019-05-04 04:31:44",
            "clan_leader_name": "" 
            "clan_members": [
                {
                    "id": 2,
                    "user_id": 2,
                    "clan_id": "1505ccd15b01",
                    "role_id": 2,
                    "status": 0,
                    "created_at": "2019-05-04 04:33:03",
                    "updated_at": "2019-05-04 04:33:03"
                }
            ]
        }
    ]

Теперь я хочу установить связь между моделью пользователя и клана, которая имеетid и clan_leader_id в качестве внешнего ключа для получения clan_leader_name из таблицы User в модели клана и user_name вместо user_id в clan_members.Член клана имеет user_id и идентификатор пользователя в качестве внешнего ключа.

1 Ответ

1 голос
/ 05 мая 2019

Проверьте отношения многие ко многим . Ваши модели / таблицы должны быть: User, Clan и ClanUser, где clan_user - это промежуточная сводная таблица, содержащая clan_id и user_id.

Ваша модель Clan должна содержать следующие отношения

public function users()
{
    return $this->belongsToMany('App\User');
}

И ваша User модель должна содержать следующие отношения

public function clans()
{
    return $this->belongsToMany('App\Clan');
}

Чтобы получить список кланов для пользователя:

$clans = User::find($userId)->clans()->get();

Чтобы получить список пользователей для клана:

$users = Clan::find($id)->users()->get();
...