Laravel Отношения - PullRequest
       0

Laravel Отношения

0 голосов
/ 02 марта 2020

У меня есть одна пользовательская таблица с именем «Пользователи».

Существуют разные роли (тренер и клиент).

Я хочу сделать так, чтобы у тренера было много клиентов, но у клиента может быть один тренер.

Я сделал таблицу в БД, как "ClientTrainer", где хранится только ID пользователей со столбцами

"id, client_id, trainer_id" 

, и я пытаюсь вернуть что-то вроде этого:

$user->allclients(); - return all clients (logged as trainer)

$user->owntrainer(); - return his trainer (logged as client)

Это бесплатно sh laravel 5.7 только с авторизацией и ролями.

Я уверен, что это можно сделать только с модалами, но мне нужна небольшая помощь.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 02 марта 2020

Сначала создайте модель для таблицы ClientTrainer. Затем попробуйте это в вашей модели пользователей:

public function clients()
{
    return $this->belongsToMany(
        "UsersModelNamespace", 
        "IntermediaryTableModelNamespace",
        "trainer_id",
        "client_id",
        "id",
        "id"
    );
}

public function trainer() // will return a collection with one element
{
    return $this->belongsToMany(
        "UsersModelNamespace", 
        "IntermediaryTableModelNamespace",
        "client_id",
        "trainer_id",
        "id",
        "id"
    );
}

Почему я публикую belongsToMany при получении тренера? Laravel 5.7 не поддерживает hasOneThrough() отношения.

0 голосов
/ 02 марта 2020

Лучшее, что вы можете сделать, это разделить ваш стол на две части; "users" & "trainers".

Даже если они имеют одинаковые поля, они не имеют одинаковую функциональность, что оправдывает разделение. Затем просто добавьте trainer_id в вашу таблицу "users"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...