Laravel - 数据透视表/关系

时间:2016-02-15 12:21:46

标签: laravel-5 eloquent pivot-table relationships

我对编程很陌生,并且正在努力理解我应该如何指定雄辩的关系。

我创建了一个名为"环聊"和"加入"允许用户加入事件的按钮,从而通过数据透视表将他们的user_id附加到hangout_id。

现在我对我应该如何/可以如此感到困惑:

  • 指定视频群聊与用户之间的关系;
  • 对于单个视频群聊,显示参加的用户列表;
  • 对于单个用户,显示已创建的环聊列表;和
  • 对于单个用户,是否显示他们正在参加的视频群聊列表?

用户可以创建多个环聊,即hasMany,但是当他们点击"加入"时,他们也属于ToMany环聊。

虽然环聊只能属于一个用户,但可以有很多与会者/用户。

有人能指出我正确的方向吗?这就是我到目前为止......

user.php的

public function hangouts()
{
    return $this->hasMany('App\Hangout');
}

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

Hangout.php

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

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

用户表

public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->string('password', 60);
        $table->rememberToken();
        $table->timestamps();
        $table->boolean('admin');
    });
}

环聊表

public function up()
{
    Schema::create('hangouts', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('user_id')->unsigned();
        $table->string('title');
        $table->string('description');
        $table->integer('price')->unsigned();
        $table->timestamp('published_at');
        $table->timestamps();

        $table->foreign('user_id')
            ->references('id')
            ->on('users')
            ->onDelete('cascade');
    });

    Schema::create('hangout_user', function(Blueprint $table)
    {
        $table->integer('hangout_id')->unsigned()->index();
        $table->foreign('hangout_id')->references('id')->on('hangouts')->onDelete('cascade');

        $table->integer('user_id')->unsigned()->index();
        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

        $table->timestamps();
    });
}

提前致谢

0 个答案:

没有答案