Используя Laravel 5.1, у меня есть глубоко связанные и вложенные модели для моей игры HTML5.Когда игрок входит в систему, он загружает свои профили.
Каждый профиль имеет m:m
выполненных квестов, m:m
выполненных заданий, m:m
выполненных мини-игр и т. Д.
Квесты / задачи / мини-игры имеют отношение belongsTo
, т. Е. TaskbelongsTo
Квест, мини-игра belongsTo
Задание и т. Д.
Загрузка этих данных в профиль user-> займет уйму времени.
То, что мне нужно сделать, вместо этого - желаниезагрузить только идентификаторы tasks
, minigames
и т. д. для профиля.Я пробовал это через $appends
:
class Profile extends BaseModel
{
protected $with = ['game', 'quests'];
protected $appends = ['task_ids'];
public function getTaskIdsAttribute()
{
return $this->tasks->pluck('id');
}
Тем не менее, это загружает модели и массив значений идентификатора задачи (загруженные модели task
тоже стремятся загрузить своих родственных детей).tasks
- массив с двумя загруженными * моделями 1023 *:
Мне нужно ускорить вход в систему, так как я могу загружать идентификаторы только безостальные атрибуты?
$start = microtime(true);
$user = User::find(Authorizer::getResourceOwnerId(), // how can I add callback here?);
$time = microtime(true) - $start;