Laravel: 多对多循环访问另一个table的数据

Laravel: Many-to-many loop and access another table's data

我的情况: 我有CAMPAIGNSBANNERS这两者之间是MANY-TO-MANY的关系。

每个活动可以有多个横幅,每个横幅可以属于多个活动。 枢轴 table 存储这些关系。 然后我还有一个 table 用于存储横幅统计信息。 横幅统计数据与活动具有多对多关系,因此我可以访问调用 CAMPAIGNS 模型的所有内容。

现在问题来了: 在视图中,我循环 $campaigns->banner_stats 允许我访问分配给活动的横幅的所有统计信息,但我不知道如何访问此循环中的横幅数据(它们有一些参数,如名称, URL, 尺寸等)。

我可以在 $campaigns->banner_stats 循环中执行 $campaigns->banners 然后有一个 if 条件来匹配横幅 ID 以获取那些额外的参数,但我认为这不是正确的方法。

我觉得我的 design/relations 很差。 还有一个问题是,当横幅与活动分离时,我将不再获得横幅参数,尽管它的数据仍将保留在统计数据中 table。因此,一个循环将 return 与另一个不同的结果数。

有什么想法我应该如何处理和改进它以便我可以在 1 个循环中轻松访问所有内容?

谢谢。

设置 'belongsTo' 从横幅统计到横幅的关系,像这样:

class BannerStat extends Model
{
    public function banner()
    {
        return $this->belongsTo('App\Banner');
    }
}

之后你可以像这样在循环中调用横幅:

foreach ( $campaigns->banner_stats as $key => $banner_statistic ) {
    $banner = $banner_statistic->banner;
}

你的问题不清楚,因为缺少 table 定义和查询(而且我认为 "pivot table" 不是你认为的意思),但我认为你可能想要执行一个连接,以便将来自不同 table 的数据合并到一个结果中。这将利用关系数据库的力量,而不是手动循环 tables。