雄辩地从关系中获取关系数据

时间:2018-03-11 21:03:57

标签: laravel model eloquent laravel-eloquent

Probaly这是一个简单的解决方案,或者我会以错误的方式解决它,但希望有人可以帮助我。

我有以下型号

  • 事件
  • 参展商
  • exhibitorExtra

活动模型中有许多参展商通过参展商的埃斯特拉模型相关联。

我要做的是参展商和参展商的参展资料。

这将返回事件数据。

$event = Event::where('Name', $name)->firstOrFail();

以下内容通过hasMany关系检索参展商的所有额外数据。

$exhibitorsExtra = $event->getExtraData->all();

这将通过正在运行的hasManyThrough函数返回所有参展商数据。

$exhibitors = $event->exhibitors->all();

在我看来,我需要参展商提供的所有数据。所以这包括额外的数据。在上面的方式中,我将所有值分开。在我看来,我将遍历所有参展商,我需要回应参展商和参展商的额外数据。这样做的最佳方式是什么?

我试图用英语重新输入所有内容以使其更清晰。因此,如果我有任何拼写错误,请告诉我,我会将其更改为其他人以供进一步使用。

更新

我已将控制器中的行更改为以下内容:

$event = Event::with('exhibitors')->with('exhibitorsExtra')->where('Name', $slug)->firstOrFail();

通过这种方式,我有一个包含2个关系的事件来保存数据。现在在我看来,我想做一些像:

@foreach ($event->exhibitors as $index => $exhibitor)
    // Here I have the exhibitor data but how do I acces the exhibitorExtra data?
@endforeach

1 个答案:

答案 0 :(得分:1)

您添加HasMany关系ExhibitorExhibitorExtra(称为extra)。

更改您的控制器:

$event = Event::with('exhibitors.extra')->where('Name', $slug)->firstOrFail();

然后您可以在视图中访问它:

@foreach ($event->exhibitors as $index => $exhibitor)
    @foreach($exhibitor->extra as $extra)
        //
    @endforeach
@endforeach