我有两个型号,App \ Song(belongsTo App \ Host)和App \ Host(hasMany App \ Song)。
我的控制器中有以下查询:
$songs = Song::whereHas('host', function($query) {
$query->where('skip_threshold', '>', \DB::raw('songs.attempts'))
->where('active', 1);
})
->whereNull('downloaded')
->get();
为了可重用性,我想转变为查询范围。
我对Eloquent很陌生,所以我不确定这是否正确,因为它的两个模型没有返回任何结果(应该存在)。
Song.php
public function scopeEligable($query)
{
$query->where('skip_threshold', '>', \DB::raw('songs.attempts'));
}
public function scopeActiveHost($query)
{
$query->where('active', 1);
}
public function scopeInDownloadQueue($query)
{
$query->whereNull('downloaded');
}