【发布时间】:2016-05-23 11:41:22
【问题描述】:
我目前有一个网站,我从数据库中抓取歌曲,循环播放并将它们显示在页面上。我现在需要添加一个选项来预览这首歌的 8bar 样本,我正在为将 foreach 放在 foreach 中的想法而苦苦挣扎。我目前在我的网页上显示以下内容:
The markup my loops are producing
我想将节拍放入歌曲容器中,但是我有一个循环推出歌曲容器,如下所示:
@foreach($tracks as $track)
<div class="song-container">
<h2>{{$track->Title}}</h2>
<button><a href="/mode-select/fun/freestyle/beatselect/{{$track->id}}?track={{$track->id}}">Select</a></button>
</div>
@endforeach
在此之上,我有我的节拍 foreach:
@foreach($beats as $beat)
<a href="{{$beat->URL}}"><button class="beat-preview">Preview beat</button></a>
@endforeach
我是否遗漏了一些非常明显的东西?我只需要将节拍 foreach 产生的锚点放入歌曲容器 div 中。
为了澄清: 我有一个带有 ID、标题等的音轨表,然后是与音轨 ID 相关的 Beat 表,Beat 表有 TrackVariantIds(基本上只是 8/16/24 条形 URL)。
更新:
我对我的 Eloquent 模型进行了排序,现在可以运行以下 foreach:
@foreach($tracks as $track)
<div class="song-container">
<h2>{{$track->Title}}</h2>
@foreach($track->beats as $beat)
{{$beat->URL}}
@endforeach
<a href="{{$track}}"><button class="beat-preview">Preview beat</button></a>
<button><a href="/mode-select/fun/freestyle/beatselect/{{$track->id}}?track={{$track->id}}">Select</a></button>
</div>
@endforeach
//In my Track Model
public function beats() {
return $this->hasMany(\app\Beat::class, 'TrackID', 'id');
}
当我实际上想告诉上面的 foreach 只采用 TrackVariantID 为 1 的节拍时,这会返回所有三个节拍。有什么想法吗? :)
提前感谢您的帮助!
【问题讨论】:
-
关系方面,一首曲目有很多“节拍”?如果是,那么您可以将
beatforeach 放在track的foreach 中,只要您正确设置它们的关系即可。 -
嘿@Mysteryos - 一首曲目有很多节拍,是的,但是我只需要此页面上的 8bar 变体(无论如何我的查询已声明,所以我只得到 8bar 的)我只是不确定如何做我的循环
-
每个节拍预览都必须有自己的 URL。因此,您的
foreach节拍循环应该这样开始:@foreach($track->beats as $beat)。否则所有曲目将具有相同的节拍预览。 -
也许你需要在 foreach 曲目中使用你的节拍 foreach 并像 foreach($track->getBeats() as $beat) 一样改变你的节拍。
-
如果节拍在曲目中,您应该有一些现场曲目->节拍,您应该能够从那里开始工作。