2017-08-14 50 views
0

人際關係掙扎伯爵的註冊狀態 - 使用Laravel 5.4,我有三個表Laravel - 每個事件

  • 事件

    • ID
    • 等領域..
  • 註冊

    • ID
    • EVENT_ID
    • STATUS_ID
    • 等領域...
  • 狀態

    • ID
    • 等領域...

狀態模式

public function registrations() 
    { 
     return $this->hasMany(Registration::class); 
    } 

事件模型

public function registrations() 
    { 
     return $this->hasMany(Registration::class); 
    } 

註冊模式

public function statuses() 
    { 
     return $this->belongsTo(Status::class, 'status_id'); 
    } 

    public function events() 
    { 
     return $this->belongsTo(Event::class, 'event_id'); 
    } 

和我EventsController看起來像這樣

public function findRegistrations($id) 
    { 
     $viewEvent = Event::find($id)->registrations; 
     return view('events.details', compact('viewEvent')); 

    } 

我只需要計數狀態爲每個事件的數量,因爲我有不同的狀態

  • 評論
  • 已批准
  • 拒絕

    和我需要顯示對葉片模板中的每個狀態號,例如

  • 新(5)

  • 評價(9)
  • 覈准(4)
  • 被拒絕(10)

我該如何使用雄辯?

回答

0

好吧,我回答我自己的問題硫鐵礦的幫助,感謝提供暗示。

這裏是解決方案:

$status = Status::select([ 
     'statuses.id', 
     'statuses.statusName', 
     \DB::raw('count(registration.status_id) as count') 
    ])->join('registration','registration.status_id','=','statuses.id') 
     ->where('event_id', '=', $id) 
     ->groupBy('registration.status_id') 
     ->get(); 
    return $status; 

我希望它可以幫助別人!

結果

[ 
    { 
    id: 1, 
    statusName: "NEW", 
    count: 10 
    }, 
{ 
    id: 2, 
    statusName: "REVIEWED", 
    count: 14 
}, 
{ 
id: 3, 
statusName: "APPROVED", 
count: 12 
}, 
{ 
id: 4, 
statusName: "REJECTED", 
count: 3 
} 
] 

乾杯!

0

您可以使用DB像

您EventsController的頂部添加此:

use DB; 

則是這樣的:

public function getStatusForEvent($id) 
{ 
    $status = DB::table('status') 
     ->join('registrations', 'registrations.status_id', '=', 'status.id') 
     ->where('registrations.event_id', '=', $id) 
     ->get(); 

    return $status; 

} 
+0

如何計算每個事件的狀態數? –

+0

如果每個註冊都有一個狀態,那麼只需計算註冊數量,如果不是從我的函數 –

+0

返回計數($狀態)但事情是,每個狀態可能會有所不同。我有四種類型的狀態 - 新建,已審覈,已接受,已拒絕。我需要獲取每個事件的數量並根據事件顯示該數字 –