Laravel Query для получения пользователей из одной страны и города - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь получить пользователей из таблицы users .У меня есть другая таблица user_details , в которой хранятся настраиваемые поля профиля.Таблица user_details имеет четыре столбца id, user, user_register_field, значение .

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');
} 

Предположим, что пользователь с идентификатором 1 вошел в систему, и я хочу показать ему других пользователей из той же страны и города, из которых пользователь 1.

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Полагаю, вам нужен какой-то 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();
0 голосов
/ 23 мая 2018

просто сделайте что-то вроде этого:

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...