Добавить поле в модель из select (select sum(weight) as weight from table)

Есть две таблицы:

Users: 
id,
name,
weight

и

Things:
id,
user_id,
weight

Модель User привязана отношением к другой модели.

Мне нужно, чтобы при любых обращениях к модели Users мне она возвращалась с полями:

id,
name,
weight,
full_weight

full_weight = (select sum(weight) from things where user_id=users.id) full_weight + users.weight

и сортировкой по полю full_weight


Ответы (1 шт):

Автор решения: n.osennij

Можно добавить в текущему перечню модели User поле, которые будет всегда автоматически возвращаться с другими стандартными полями при запросе. В модели:

protected $appends = ['full_weight'];

public function getFullWeightAttribute()
{
    //$this->things // получить коллекцию связанных вещей
    return 76; // перед этим любая ваша логика, запросы и всё, что душе угодно
}
→ Ссылка