Использую Laravel 6.
В модели создал следующие:
public function getCountPointsAttribute()
{
return $this->query()
->join('coefficients as k1', 'event_id', '=', 'k1.id')
->join('coefficients as k2', 'participation_id', '=', 'k2.id')
->join('coefficients as k3', 'individuality_id', '=', 'k3.id')
->select(DB::raw('round(sum(k1.coefficient * k2.coefficient * k3.coefficient), 1) as points'));
}
и соответственно занес его в appends. Сейчас результат работы этого метода выглядит так: {}
Рабочий вариант, который генерирует кучу запросов:
public function getCountPointsAttribute()
{
$sum = $this->getEvent->coefficient
* $this->getParticipation->coefficient
* $this->getIndividuality->coefficient;
return round($sum, 1);
}
public function getEvent()
{
return $this->hasOne(Coefficient::class, 'id', 'event_id');
}
public function getParticipation()
{
return $this->hasOne(Coefficient::class, 'id', 'participation_id');
}
public function getIndividuality()
{
return $this->hasOne(Coefficient::class, 'id', 'individuality_id');
}
Как правильно реализовать данную задумку в одном запросе?