gpt4 book ai didi

php - Laravel 多对多关系 5 个表

转载 作者:行者123 更新时间:2023-11-29 11:21:04 31 4
gpt4 key购买 nike

我有一个名为 Members 的模型,另一个名为 Awards 的模型,另一个名为 Events 的模型。

每个成员(member)可以多次获得多个奖项,每个奖项可以分配给多个成员(member),这些奖项可以在成员(member)个人资料中授予,也可以作为事件的结果授予。

我的成员(member)模型关系:

public function Awards()
{
return $this->belongsToMany('App\Award', 'award_members', 'member_id', 'award_id')
->withTimestamps()
->orderBy('award_members.created_at','desc');
}

我的关系表:

Schema::create('award_members', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id');
$table->integer('club_id');
$table->integer('award_id');
$table->integer('member_id');
$table->integer('event_id')->nullable();
$table->timestamps();
});

我的 View 输出:

@foreach($member->Awards as $a)
{{ $a->title }} | {{ $a->pivot->created_at }}
@endforeach

输出:

  • 奖 1 | 12/08/2016
  • 奖 2 | 2016年12月8日
  • 奖 1 | 2016年11月8日

如果存储在关系表中,我还想输出事件名称(如果通过事件将其添加到成员个人资料中)。以上仅显示直接添加到成员(member)时的奖励详情。

在我的关系表中,事件中的条目类似于:

  • id=4
  • user_id = 1(与用户表相关)
  • club_id = 1(与俱乐部 table 相关)
  • award_id = 3(与奖项表相关)
  • member_id = 1(与成员表相关)
  • event_id = 1(与事件表相关,但可以为 NULL)

输入事件名称后如何输出?

最佳答案

我想当你有如此复杂的枢轴时,也许它本身就值得成为一个模型。事实上,如果你想一想,你的奖励是一种奖励,在不同的情况下可以多次获得。在某个时刻、通过某个事件向某人授予奖项……这是一个不同的概念。

假设您正在为图书馆开发一个系统。您通常会有一个用于一本书的模型(标题、作者等),以及另一个用于“BookCopy”或“BookExemplar”的模型,它代表该书的每个物理副本。当用户拿走一本书时,他们实际上拿的是副本。

所以我会说

// Member.php
public function Awards()
{
return $this->hasMany(AwardGrant::class);
}
<小时/>
// AwardGrant.php
public function Award()
{
return $this->belongsTo(Award::class);
}

public function Event()
{
return $this->belongsTo(Event::class);
}

关于php - Laravel 多对多关系 5 个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38927030/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com