Сумма реляционного столбца и сортировка с левым объединением в Laravel - PullRequest
0 голосов
/ 11 января 2020

У меня есть модель Award, которая находится в hasMany отношениях с Company моделью. Таким образом, моя Company модель имеет следующее определенное отношение:

public function awards() {
   return $this->hasMany("App\Award", 'awarded_by', 'id');
}

И моя Award Модель имеет:

protected $table = 'contract_awards';

public function awardedBy()
{
    return $this->belongsTo('App\Company', 'awarded_by', 'id');
}

Я хочу получить все companies, получившие наибольшее order_amount (имя поля внутри contract_awards таблицы), которое будет sum of all the awards, которое оно имеет, а затем упорядочить их в соответствии со значениями. Чтобы добиться этого, я пытаюсь сделать leftJoin, а затем с помощью select я пытаюсь получить сумму элемента, но в нем говорится неизвестный столбец:

Company::has('awards')->leftjoin('contract_awards', 'companies.id', '=', 'contract_awards.awarded_by')
    ->select('contract_awards', 'sum(order_amount) as order_amount')
    ->orderBy('order_amount', 'desc')
    ->limit(5)->get(),

Но я получаю следующую ошибку:

SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец 'contract_awards' в 'списке полей' (SQL: выберите contract_awards, sum(order_amount) в качестве order_amount из companies в левом соединении contract_awards на companies. id = contract_awards. awarded_by, где существует (выберите * из contract_awards, где companies. id = contract_awards. awarded_by и contract_awards. deleted_at - ноль) и companies. deleted_at - ноль порядка order_amount des c предел 5)

Помогите мне. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...