Я унаследовал кодовую базу Laravel API, без личного предварительного Laravel воздействия.
Одна проблема, с которой я сталкиваюсь, это то, что контроллер возвращает больше, чем я явно просил.
Например, у пользователя есть все обычные вещи - имя, фамилия, электронная почта и т. Д. c ...
У пользователей также есть курсы, на которые они подписаны, и уроки, которые они закончили и т. Д. c.
В пользовательской модели $appends = [...]
используется с некоторыми функциями setThisAttribute
для загрузки модели данными из этих связанных моделей. Я могу понять, почему предыдущие разработчики делали это, потому что это очень удобно для некоторых вызовов API.
Пока я все это понимаю.
Хотя иногда я хочу сделать следующее: просто получите пользовательские данные, которые я явно запрашиваю.
В контроллере я мог бы написать что-то вроде (очень простой пример):
$users = User::select('users.id', 'users.first_name')->get();
Я хочу получить:
[
{
id: 1,
first_name: "Jackson"
},
...
]
Но вместо этого я сейчас получаю что-то вроде:
[
{
id: 1,
first_name: "Jackson",
courses: [...lots of data...],
lessons: [...even more data...]
},
...
]
Разница в реальных ответах на вопрос составляет <100 мс, чтобы загрузить то, что я хочу клиенту, по сравнению с> 10 с с помощью $ добавления. Перегрузка модели.
Есть ли способ отказаться от добавления $ добавления для некоторых вызовов БД, или мне нужно переписать весь API, чтобы явно запросить, что нужно? в тех местах, где в настоящее время используется $ appends?