Извлеките значения из WITH Eloquent в Laravel

У меня есть раскрывающийся список, который показывает только пользователя с ролью сборщика и заемщика. Вот мой код

public function create()
{
    $users = User::whereHas('roles', function ($q) {
                $q->where('roles.name', '=', 'collector')->orWhere('roles.name', '=', 'borrower');
            })
            ->with('profile')
            ->get()
            ->pluck('name','id');

    return view('dashboard.documents.create', compact('users'));
}

этот код в порядке, но что мне нужно вырвать, так это столбцы first_name, last_name и user_id из «профиля». Как я могу этого добиться?

Огромное спасибо заранее!


person Lito    schedule 18.11.2020    source источник
comment
Отвечает ли это на ваш вопрос? Laravel извлекает поля из отношений   -  person miken32    schedule 18.11.2020
comment
Я думаю, вам нужно только вместо отрывать   -  person apokryfos    schedule 18.11.2020
comment
спасибо @miken32! Также мне интересно, можно ли добавить фамилию внутри щипка? потому что мне нужно показать в поле выбора имя и фамилию   -  person Lito    schedule 18.11.2020
comment
pluck() предназначен для извлечения одного столбца из результатов. Вместо этого вы можете искать get() или only(), как было предложено выше.   -  person miken32    schedule 18.11.2020


Ответы (1)


Вы делаете один из этих

$users = User::whereHas('roles', function ($q) {
             $q->where('roles.name', '=', 'collector')->orWhere('roles.name', '=', 'borrower');})
            ->with('profile')
            ->select('name','id')
            ->get();

Or

$users = User::whereHas('roles', function ($q) {
             $q->where('roles.name', '=', 'collector')->orWhere('roles.name', '=', 'borrower');})
            ->with('profile')
            ->get(['name','id']);

Оба способа вернут collection со связанными моделями, каждая запись модели будет иметь выбранные столбцы, если вы хотите преобразовать ее в массив, вы можете добавить ->toArray() после двух способов, и он преобразует коллекцию в массив.

person mmabdelgawad    schedule 18.11.2020
comment
привет, вы знаете, как я смогу использовать profile.first_name и profile.lastn_ame в качестве выбора в поле «Выбор» вместо имени из пользовательской таблицы? - person Lito; 19.11.2020
comment
Вы можете получить к нему доступ как profile.first_name и profile.last_name - person mmabdelgawad; 19.11.2020