Laravel красноречиво для получения данных реляционной таблицы одним столбцом в качестве ключа и другим в качестве значения - PullRequest
0 голосов
/ 27 марта 2020

У меня есть две таблицы users и user_profiles со следующей схемой

Таблица пользователей

  • id
  • имя пользователя
  • email
  • пароль
  • роль
  • is_ root
  • create_at
  • updated_at

Таблица профилей пользователей

  • id
  • user_id (FK -> users -> id)
  • key
  • значение

User Модальный

public function profileData()
{
    return $this->hasMany(UserProfile::class);
}

UserProfile Модальный

public function user()
{
    return $this->belongsTo(User::class);
}

Поэтому, если я использую $user->profileData, это дает мне этот результат, который является правильным.

=> Illuminate\Database\Eloquent\Collection {#3244
     all: [
       App\UserProfile {#3251
         id: 3,
         user_id: 10,
         key: "country",
         value: "India",
       },
       App\UserProfile {#3242
         id: 1,
         user_id: 10,
         key: "first_name",
         value: "John",
       },
       App\UserProfile {#3252
         id: 2,
         user_id: 10,
         key: "last_name",
         value: "Doe",
       },
     ],
   }

Вопрос

Однако я хочу получить значение / данные поля value из таблицы user_profiles, указав значение поля key по идентификатору пользователя. Например, если я передам country, он должен вернуть India или first_name, тогда John в приведенном выше примере. Как этого добиться?

1 Ответ

1 голос
/ 30 марта 2020

U необходимо использовать операторы where(), select() и value() для необходимого значения

UserProfile::where('user_id', $id)->where('key', $key)->select(['key','value'])->value('value')
...