Laravel /雄辩的关系和查询数据库

Exoh乔什

我在使用特定的雄辩查询时遇到了麻烦,无法终生解决。

我正在尝试获取数据库中具有的节拍的8小节预览,该节拍的相关性如下:Beat.TrackId-> Track.id。歌曲的不同小节的存储方式如下:Beat.TrackVariantID。

我目前有以下代码:

//My controller
$genres = Genre::all();
    $tracks = Track::all();
    $beats = Beat::where('TrackVariantID', 1)->get();


    return view('play.forfun.songselect')->with('genres', $genres)->with('tracks', $tracks)->with('beats', $beats);

我的看法 :

@foreach($tracks as $track)
    <div class="song-container">
       <h2>{{$track->Title}}</h2>
         @foreach($track->beats as $beat)
             {{$beat->URL}}
         @endforeach
       <a href=""><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

我的节拍模型:

<?php namespace app;

use Illuminate\Database\Eloquent\Model;

class Beat extends Model {

    /************
    * Generated *
    *************/

    protected $table = 'Beat';
    protected $fillable = [
        'id', 
        'TrackId', 
        'TrackVariantID',
        'SelectedCount',
        'CreditCost',
        'URL'
    ];

    public function track() {
        return $this->belongsTo(\app\Beat::class, 'TrackId', 'id');
    }
}

我可以获取节拍网址,但我不仅可以获取Beat.TrackVariantID为1的节拍网址,我似乎可以全部获取这三个网址。

<div class="song-container">
    <h2>Glory</h2>
    https://s3-eu-west-1.amazonaws.com/20dollarbeats/8bar/8b_eastcoast.mp3
    https://s3-eu-west-1.amazonaws.com/16b_eastcoast.mp3
    https://s3-eu-west-1.amazonaws.com/24b_eastcoast.mp3
    <a href="">
   <button class="beat-preview">Preview beat</button></a>
   <button><a href="/mode-select/fun/freestyle/beatselect/3?track=3">Select</a></button>
 </div>

任何帮助将不胜感激,对于Laravel位人员,我还是一个相对较新的人。

谢谢

爱国者

首先,由于要遍历所有曲目并显示它们的相关节拍,因此您希望急于加载曲目的节拍。通过消除N + 1问题,可以提高性能。

渴望加载:

$tracks = Track::with('beats')->get();

现在,如果您只需要TrackVariantID为1的节拍,则可以将此限制添加到您急切的加载中:

$tracks = Track::with(['beats' => function ($query) {
    // $query is the query for the beats related to the tracks
    $query->where('TrackVariantID', '=', 1);
})->get();

鉴于上述对您急切加载的限制,当您执行时$track->beats,您只会获得与TrackVariantID为1的与该曲目相关的节拍。


顺便说一句,我不知道这是否是您输入的错字,但您track()Beat模型上的关系与错误的模型有关。该功能应为:

public function track() {
    return $this->belongsTo(\app\Track::class, 'TrackId', 'id');
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

雄辩的laravel中的关系数据库

来自分类Dev

Laravel将数据库查询转换为雄辩

来自分类Dev

Laravel雄辩的查询关系

来自分类Dev

Laravel雄辩的关系查询

来自分类Dev

Laravel雄辩的关系查询

来自分类Dev

具有多个关系的laravel数据库查询

来自分类Dev

Laravel数据库关系

来自分类Dev

数据库关系 - Laravel

来自分类Dev

与 Laravel 的数据库关系

来自分类Dev

Laravel5:如何在数据库中表达雄辩的模型关系?

来自分类Dev

Laravel雄辩和关系

来自分类Dev

Laravel:如何使用雄辩的方式查询(dd / mm / yyy)中的某个日期的数据库

来自分类Dev

使用 laravel 的雄辩命令时,数据库查询无法按预期工作

来自分类Dev

如何在组件Vue中显示具有数据库关系或雄辩的laravel中的单个数据

来自分类Dev

嵌套关系Laravel雄辩查询

来自分类Dev

使用关系在单个雄辩的查询laravel中获取数据?

来自分类Dev

无法使用雄辩和SQL Server数据库在Laravel中选择

来自分类Dev

laravel:雄辩的示例将数据插入数据库

来自分类Dev

Laravel-数据库关系

来自分类Dev

Laravel关系数据库连接

来自分类Dev

Laravel 5数据库关系类型

来自分类Dev

Laravel 6数据库关系

来自分类Dev

Laravel嵌套跨数据库关系

来自分类Dev

Laravel-数据库关系

来自分类Dev

Laravel 中的数据库关系

来自分类Dev

Laravel雄辩的插入数据与关系

来自分类Dev

选择与laravel雄辩的关系的数据

来自分类Dev

Laravel雄辩的分组与数据透视表和关系

来自分类Dev

Laravel雄辩的更新记录而无需从数据库加载