Php 根据关系的where条件检索所有用户

Php 根据关系的where条件检索所有用户,php,laravel,eloquent,laravel-5.1,Php,Laravel,Eloquent,Laravel 5.1,我正在尝试为我的用户建立一个搜索系统 第一部分很简单,因为我搜索的所有信息都在同一个表中 第二部分涉及根据提供的IP地址搜索用户。为此,我使用: $users = User::with(array('login' => function($q){ $q->where('ip_address', Input::get('ipaddress')); }))->paginate(10); 但是,这将返回所有用户,而不仅仅是那些

我正在尝试为我的用户建立一个搜索系统

第一部分很简单,因为我搜索的所有信息都在同一个表中

第二部分涉及根据提供的IP地址搜索用户。为此,我使用:

$users = User::with(array('login' => function($q){
                $q->where('ip_address', Input::get('ipaddress'));
            }))->paginate(10);
但是,这将返回所有用户,而不仅仅是那些满足IP地址要求的用户。我哪里做错了?还是有更简单的方法

$users = User::whereHas('login', function ($q) {
    $q -> where('ip_address', Input::get('ipaddress'));
}) -> paginate(10);

试试看

你想要的是一个
内部连接
我刚刚找到了
whereHas
并找到了它。但我就是这样做的!事实并非如此。当您将
与()一起使用时,
-您的
条件返回了所有用户,包括
登录
,如果登录关系不符合该条件,它将像
实体一样被包括在内。但是,当您使用where has
时,它会根据关系条件过滤用户