【发布时间】:2016-12-20 00:04:21
【问题描述】:
我有一个模型叫做 Members,另一个叫做 Awards,另一个叫做 Events。
每个成员可以多次获得多个奖项,每个奖项可以分配给多个成员,这些奖励可以在成员个人资料中授予,也可以作为活动的结果。
我的会员模型关系:
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();
});
我的视图输出:
@foreach($member->Awards as $a)
{{ $a->title }} | {{ $a->pivot->created_at }}
@endforeach
这个输出:
- 一等奖 | 2016 年 12 月 8 日
- 奖2 | 2016 年 12 月 8 日
- 一等奖 | 2016 年 11 月 8 日
如果存储在关系表中,我还想输出通过事件添加到成员配置文件中的事件名称。以上仅显示直接添加到会员的奖励详情。
在我的关系表中,来自事件的条目看起来类似于:
- id = 4
- user_id = 1(与用户表相关)
- club_id = 1(与俱乐部表相关)
- award_id = 3(与奖励表相关)
- member_id = 1(与成员表相关)
- event_id = 1(与事件表相关但可以为NULL)
输入事件名称如何输出?
【问题讨论】:
-
能否详细说明您要检索的内容?
-
据我了解,您想检索关系表中有关事件名称的所有详细信息。对吗?
-
@jaysingkar 抱歉,有几种方法可以直接在他们的个人资料中或从活动中向会员授予奖励。如果直接在他们的个人资料中授予奖励,则不会存储任何事件 ID,但是当在下一个事件中授予奖励时,将存储该事件的 ID。我要做的是在 foreach 循环中查看成员个人资料上的所有奖项,如果其中一个奖项与活动相关联,则显示活动名称
-
好的。你能把你的方法发布到你要检索数据的地方吗
-
@jaysingkar 当然,因为所有奖项都与会员有关,所以 $member = Member::FindOrFail($id);以典型的表演方式。
标签: php mysql laravel eloquent