У меня есть модель 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)
Помогите мне. Спасибо.