首页 文章

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

提问于
浏览
0

我有两个表歌曲(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

    你可以试试

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

    如果我理解你在寻找什么,你可以将where子句链接在一起,如下所示:

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

相关问题