Проблема с получением данных из запроса в Laravel - PullRequest
1 голос
/ 15 апреля 2020

У меня есть две таблицы

field_values ​​(с некоторыми данными)

id  field_id  value  label          sort
1       1       1     Men            1
2       1       2     Women          2
3       2       3     Relationship   1
4       2       4     Chat           2
5       2       5     Friendship     3

user_interests (с некоторыми данными)

user_id  field_id  value_id
   1        1         1
   1        2         4
   1        2         5

Я пытаюсь написать запрос где я получу пользователя с идентификатором 1 и field_id 2, чтобы иметь возможность отображать в своих блейдах значения value_id 4 и 5, но не отображать эти идентификаторы, а отображать значение столбца 'label', которое соответствует таблице значений user_interests формы value_id в этом случае 4,5 чата, дружбы из таблицы field_values ​​в этом примере. Вот что я попробовал, но я получил массив из шести элементов: Отношения, Чат, Дружба x2. Любая помощь приветствуется.

запрос:

public static function queryFunction($userId)
{
    $results = DB::table('user_interests as uin')
        ->select(DB::raw("
            fv.*,
            uin.field_id, uin.value_id
        "))
        ->join('field_values as fv', 'fv.field_id', '=', 'uin.field_id')
        ->where('uin.field_id', 2)
        ->where('uin.user_id', $userId)
        ->get();

        dd($results);

    return $results;
}

1 Ответ

1 голос
/ 15 апреля 2020

Как насчет 2 простых шагов без объединения:

$user_interests = DB::table('user_interests')->select('value_id')->where('field_id', 2)->where('user_id', $userId)->get();

Из этого возьмите values в качестве массива ($ user_interests_values) и затем

$results = DB::table('field_values')->whereIn('value', $user_interests_values)->get();

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