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

时间:2018-05-23 13:25:40

标签: php mysql laravel laravel-5.2

我正在尝试从用户表中获取用户。我有另一个表 user_details ,它存储自定义配置文件字段。 user_details 表有四列 id,user,user_register_field,value

id    user   user_register_field  value

1     1      gender               Male
2     1      city                 somecity
3     1      country              somecountry
4     2      gender               Female
5     2      city                 Null
6     2      country              somecountry
7     3      gender               Male

Users.php

public function Udetails()
{
    return $this->hasMany('App\UserDetails','user');
} 

假设用户ID为1的用户已登录&我想向他展示来自同一国家和地区的其他用户用户1来自的城市。

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

我猜你需要某种Parameter Grouping标准

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