【问题标题】:Laravel Query to get users from same country and cityLaravel Query 获取来自同一国家和城市的用户
【发布时间】:2018-05-24 14:14:31
【问题描述】:

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

id 用户 user_register_field 值 1 1 性别 男 2 1 个城市 somecity 3 1 个国家 某个国家 4 2 性别 女性 5 2 城市 空 6 2 国 某国 7 3 性别 男

Users.php

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

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

【问题讨论】:

    标签: php mysql laravel laravel-5.2


    【解决方案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();
    

    【讨论】:

    • 非常感谢您的回答。我以前写过这样的代码。但问题是,一些用户没有在他们的个人资料中选择国家,并且在 user_details 表中没有任何相关的行,而一些同样的问题也与城市有关。有什么解决办法吗?
    【解决方案2】:

    我猜你需要某种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();
    

    【讨论】:

      猜你喜欢
      • 2016-12-17
      • 2016-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多