我有两个表Songs(属于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做到这一点,这样我就可以利用渴望在刀片模板中加载相关数据的优势。

最佳答案

你可以试试

$songs = Song::whereHas('host', function($query) {
    $query->where('skip_threshold', '>', DB::raw('songs.attempts'));
})->get();

关于php - Eloquent 地在WHERE子句中引用外键数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36507506/

10-10 11:14