Laravel-如何获得按客户状态分组的客户订单

时间:2018-09-07 23:23:31

标签: laravel eloquent

我有一个无法解决的情况,我有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 :(得分:0)

通过这种方式定义您在客户模型中的关系

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 =“已完成”

您可以像这样访问de属性:

$client->orders_completed

获得4