在Eloquent中引用WHERE子句中的外键数据

时间:2016-04-08 19:11:57

标签: php mysql laravel eloquent

我有两个表歌曲(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来做到这一点,这样我就可以利用刀片模板中急切加载的相关数据。

2 个答案:

答案 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();