Получить все значения, которые удовлетворяют условию первой таблицы - PullRequest
0 голосов
/ 25 апреля 2019

enter image description here

У меня есть две таблицы пользователей и местоположение.Мне нужно объединить обе таблицы

enter image description here

Мне нужно получить номер зоны всех пользователей, присутствующих в таблице пользователей.т.е. пользователь 1 имеет 3 записи во второй таблице, поэтому мне нужно присоединиться к таблице таким образом, что id1 = 1 area = 2,3

area 2 повторяется, поэтому не включайте его дважды

я попробовал объединение, но теперь нашел правильный способ сделать это.

Что я пробовал?

    $location = User::
  join('addresses','users.id1','=','addresses.id1')                                    ->select('users.id1','addresses.area')
                    ->get();

Ожидаемый результат

Пользователь 1 -> Площадь -> 2,3

1 Ответ

2 голосов
/ 25 апреля 2019

Вот два способа сделать это.

Во-первых, вы можете использовать отношения Laravel: -

В вашей модели User создать отношения: -

function addresses()
{
    return $this->hasMany(Address::class, 'id1', 'id1');
}

Теперь в вашем пользовательском контроллереВы можете получить адреса (области) пользователей, например, такие:

$users = User::with('addresses')->get();
dd($users->toArray());

Это напечатает что-то вроде этого

[
    {
        id1: 1,
        name: abaa
        pwd: 12345
        addresses: [
            {
                id2: 1,
                id1: 1,
                area: 2
            },
            {
                id2: 2,
                id1: 1,
                area: 3
            },
            {
                id2: 3,
                id1: 1,
                area: 3
            }
        ]
    },
    {
        ...
    }
]

Во-вторых, вы можете использовать отношения Laravel: -

$builder = new User;
$builder->join('addresses','users.id1','=','addresses.id1')
    ->selectRaw("users.*, GROUP_CONCAT(DISTINCT addresses.area SEPARATOR ',') as distinct_areas")
    ->groupBy("users.id1")
    ->get();

Этот запрос даст вам что-то вроде этого

[
    {
        id1: 1,
        name: abaa,
        pwd: 12345,
        distinct_areas: 2,3
    },
    {
        ...
    }
]

Я думаю, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...