Laravel 3 个表之间的关系?

Laravel relation between 3 tables?

我有以下 tables:

  1. 用户(经典laraveltable)
  2. 事件
  3. user_events

在user_events中我将分配的用户插入到事件中,table结构是这样的:

Schema::create('user_events', function (Blueprint $table) {
    $table->increments('id');
    $table->integer('user_id')->unsigned();
    $table->foreign('user_id')->references('id')->on('users')->onUpdate('cascade')->onDelete('cascade');
    $table->integer('event_id')->unsigned();
    $table->foreign('event_id')->references('id')->on('events')->onUpdate('cascade')->onDelete('cascade');
    $table->timestamps();
});

我想用他的事件为 auth 用户创建一个页面。

为了获取 Id,我在模型用户中使用以下关系:

public function userEvents() {
    return $this->hasMany('App\Models\UserEvent');
}

Trought controller 我得到了事件 ID 的列表。

我以前的来源是: Laravel relation between 3 models

Laravel Eloquent Relation between 3 table

我的问题是,要通过此事件 ID 的事件名称执行什么操作?

您可以 pluck $user->userEvents 返回的集合中的 name :

$user->userEvents->pluck('name');

希望对您有所帮助。

通过查看您的架构,关系应该是 many-to-many instead of one-to-many

所以你在 User 模型中的关系看起来是:

public function events()
{
    return $this->belongsToMany('App\Models\Event');
}

然后在您的控制器中,通过以下方式获取经过身份验证的用户的所有事件:

$events = auth()->user()->events; // returns collection of Event model