@VoRoN1999

Как правильно добавить собственное значение в модели при помощи join?

Использую 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');
    }


Как правильно реализовать данную задумку в одном запросе?
  • Вопрос задан
  • 47 просмотров
Пригласить эксперта
Ответы на вопрос 1
tmaslov22
@tmaslov22
Backend developer
Сейчас getCountPointsAttribute готовит запрос (Query Builder), а не отдает значение. Стоит добавить функцию для вызова этого запроса и получения значения.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы