Использование пользовательских средств доступа в Laravel красноречивых отношениях - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть Album модель в моем Laravel приложении, в котором я определил отношения вроде:

final public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
    return $this->belongsTo(User::class);
}

Я создал собственный аксессор в моей User модели, например:

final public function getFullNameAttribute(): string
{
    return $this->first_name . ' ' . $this->last_name;
}

Теперь, когда я запрашиваю базу данных следующим образом:

return response()->json(Album::with('user:id,full_name')->get(), 200);

Выдает ошибку:

"SQLSTATE[42S22]: Column not found: 1054 Unknown column 'full_name' in 'field list' (SQL: select `id`, `full_name` from `users` where `users`.`id` in (3, 5))

Есть идеи, что я здесь делаю неправильно?

1 Ответ

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

Вместо добавления full_name к with('user:id,full_name') вы можете обновить модель User, добавив public $appends = ['full_name'];

и обновив with как with('user'), чтобы автоматически добавлять полное имя к вашим моделям пользователей. .

Другой альтернативой будет добавление обязательных столбцов в метод отношений, таких как;

final public function user()
{
    return $this->belongsTo(User::class)->select(['id', 'first_name', 'last_name']);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...