我有两个表歌曲(belongsTo App \ Host)和Hosts(hasMany App \ Song)。我的歌曲表有一个attempts
列,我的主机表有一个skip_threshold
。我想查询所有未达到相关主机跳过阈值的歌曲。
我该怎么做?
我尝试过这样的事情:
return $songs = Song::whereIn('host_id', $available_hosts)
->where('attempts', '<', $songs->host->skip_threshold)->get();
我试图利用Eloquent关系查询,但从测试中我发现这不会起作用。我想尝试使用Eloquent来做到这一点,这样我就可以利用刀片模板中急切加载的相关数据。
答案 0 :(得分:1)
如果我理解你在寻找什么,你可以将条款链接在一起,如下:
$songs = Song::whereHas('host', function($query) {
$query->where('skip_threshold', '>', DB::raw('songs.attempts'));
})->whereIn('host_id', $available_hosts)->get();
答案 1 :(得分:0)
你可以尝试
$songs = Song::whereHas('host', function($query) {
$query->where('skip_threshold', '>', DB::raw('songs.attempts'));
})->get();