Laravel: 多对多循环访问另一个table的数据
Laravel: Many-to-many loop and access another table's data
我的情况:
我有CAMPAIGNS
和BANNERS
这两者之间是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。
我的情况:
我有CAMPAIGNS
和BANNERS
这两者之间是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。