Laravel - Как я могу получить заказы клиента, сгруппированные по их статусу? - PullRequest
0 голосов
/ 08 сентября 2018

У меня есть ситуация, которую я не могу исправить, у меня есть 3 таблицы / модели со структурой, как показано ниже:

  • Модель клиента: Client->hasMany(Order::Class)
  • Модель заказа: Order->belongsTo(Client::Class) и Order->belongsTo(Status::Class)
  • Модель состояния: Status->hasMany(Order::class)

Я хочу, чтобы все заказы клиентов группировались по их статусам, например: 3 отменено - 4 выполнено - 5 обработано

Я попробовал это, но не сработало: (

Client Model {


    public function {

        return $this->orders()->selectRaw('status_id, count(id) as total')->groupBy('status_id);

        // orders() = is the relation a client hasmany orders
    }

}

Может кто-нибудь помочь, пожалуйста, спасибо

1 Ответ

0 голосов
/ 12 сентября 2018

Определите таким образом ваши отношения в модели клиента

public function orders()
{
    return $this->hasMany(Order::class);
}

public function getOrdersCompletedAttribute()
{
    return $this->orders->where('id_status', 5)->count();
}

public function getOrdersProcessingAttribute()
{
    return $this->orders->where('id_status', 1)->count();
}

Предположим, статус 1 = «обработка» и 5 = «завершено»

Вы можете получить доступ к атрибуту, например так:

$client->orders_completed

Чтобы получить 4

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