我有一个无法解决的情况,我有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
}
}
谁能帮忙,谢谢
答案 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