Laravel- многослойные отношения - PullRequest
0 голосов
/ 16 октября 2019

Я работаю над быстрым проектом, в котором у меня многоуровневые отношения, и я борюсь с одним из них, вот краткое описание: enter image description here - отношение многие ко многиммежду пользователями и видами спорта: $ user-> sports

class User extends Authenticatable implements MustVerifyEmail
{
    use Notifiable;

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

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

- теперь я хочу добавить модель комментариев, в которой пользователь будет вводить краткое описание по каждому виду спорта, поэтому какие отношения следует использовать вздесь, чтобы сопоставить каждый вид спорта с его собственным комментарием. один ко многим?

1 Ответ

4 голосов
/ 16 октября 2019

Вы можете просто использовать сводную таблицу.

+-----+                              +------+
|users|                              |sports|
+-----+                              +------+
|id   |         +----------+         |id    |
|name |------->>|user_sport|<<-------|name  |
+-----+         +----------+         +------+
                |id        |
                |user_id   |
                |sport_id  |
                |comment   |
                +----------+
class User extends Authenticatable implements MustVerifyEmail
{
    use Notifiable;

    public function sports()
    {
       return $this->belongsToMany('App\Sport')->withPivot('comment');
    }
}
class Sport extends Model
{
    public function users()
    {
        return $this->belongsToMany('App\User')->withPivot('comment');
    }
}
# example of saving a comment
$user = User::find($user_id);

$user->sports()->attach($soccer_id, ['comment' => 'I really like soccer!']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...