BadMethodCallException Вызов неопределенного метода App \ User :: map () - PullRequest
1 голос
/ 29 марта 2020

Я хочу добавить дополнительные данные в коллекцию $user, чтобы получить поля профиля в view

. Я пытался использовать $user['profileFields'] = $this->getProfileFields() и передать $user в представление, используя compatct или with, и это работает нормально.

DD

enter image description here

Однако я нашел некоторую ссылку на net говоря, что я могу расширить, используя map, но когда я попробовал, он дает следующую ошибку

BadMethodCallException
Вызов неопределенного метода App \ User :: map ()

Так вот что я пытаюсь понять

Вопрос:
Является ли приведенный ниже код неправильным и не будет работать для чего? Я ищу, и первый подход является решением? Есть ли рекомендуемый способ добавления дополнительных данных в коллекцию $user?

public function show(User $user)
{
    $user->map(function ($user){
       $user['profileFields'] = $this->getProfileFields();
       return $user;
    });

    return view('admin.user.show', compact('user'));
}

Ответы [ 2 ]

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

методы коллекции работают над коллекцией, здесь вы получаете объект пользователя.

$user->profileFields = $user->getProfileFields();
return view('admin.user.show', compact('user'));
0 голосов
/ 29 марта 2020

Если profileFields находится в другой таблице и имеет foreign key с моделью ProfileField, попробуйте добавить отношение один к одному к User модели.

Внутри модели User добавьте функцию

public function profileFields()
{
    return $this->belongsTo('App\ProfileField', 'foreign_key','other_key');
}

Это даст вам profileFields для каждого пользователя при вызове с использованием eloquent.

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