【问题标题】:eloquent getting relationship data from relationshipeloquent 从关系中获取关系数据
【发布时间】:2018-03-11 21:03:57
【问题描述】:

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

我有以下型号

  • 事件
  • 参展商
  • exhibitorExtra

Event 模型有许多参展商,它们通过existorExtra 模型关联。

我想要做的是为某个活动获取参展商和参展商额外数据。

这将返回事件数据。

$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

【问题讨论】:

  • 能把目前写的视图代码加进去吗?

标签: laravel model eloquent laravel-eloquent


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 2020-10-08
    • 2021-12-07
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多