Php Laravel查询以获取来自同一国家和城市的用户

Php Laravel查询以获取来自同一国家和城市的用户,php,mysql,laravel,laravel-5.2,Php,Mysql,Laravel,Laravel 5.2,我正在尝试从users表中获取用户。我有另一个存储自定义配置文件字段的表user_details。user\u details表有四列id、user、user\u register\u field和value 假设用户id为1的用户已登录&我想向他显示来自用户1所在国家和城市的其他用户。只需执行以下操作: User::whereHas('Udetails',function($q){ $q->where('user_register_field','country')

我正在尝试从users表中获取用户。我有另一个存储自定义配置文件字段的表user_details。user\u details表有四列id、user、user\u register\u field和value


假设用户id为1的用户已登录&我想向他显示来自用户1所在国家和城市的其他用户。

只需执行以下操作:

User::whereHas('Udetails',function($q){
    $q->where('user_register_field','country')
        ->where('value',your_logged_users_country);
})->whereHas('Udetails',function($q){
    $q->where('user_register_field','city')
        ->where('value',your_logged_users_city);
})->get();

我想你需要一些标准


非常感谢你的回答。我以前写过这样的代码。但问题是,一些用户在他们的配置文件中并没有选择国家,在用户详细信息表中并没有任何相关行,而一些城市也存在同样的问题。有什么解决办法吗?
public function Udetails()
{
    return $this->hasMany('App\UserDetails','user');
} 
User::whereHas('Udetails',function($q){
    $q->where('user_register_field','country')
        ->where('value',your_logged_users_country);
})->whereHas('Udetails',function($q){
    $q->where('user_register_field','city')
        ->where('value',your_logged_users_city);
})->get();
User::whereHas('Udetails',function($query) use ($country, $city){
    $query->where(function ($query) {
            $query->where('user_register_field', '=', 'country')
                  ->where('value', '=', $country);
        })->orWwhere(function ($query) {
            $query->where('user_register_field', '=', 'city')
                  ->where('value', '=', $city);
        });
})->get();