Laravel 3 个表之间的关系?
Laravel relation between 3 tables?
我有以下 tables:
- 用户(经典laraveltable)
- 事件
- 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
我有以下 tables:
- 用户(经典laraveltable)
- 事件
- 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