2016-11-08 25 views
4

不好意思,是如此愚蠢的問題..如何精簡Laravel ORM

我用Controller,有很多ORM,我想簡化這段代碼。

我contorller

public function news(Request $request) 
{ 
    $history = Recruitments_status::where('recruitments_status.status',1)->get(); 
    $history_a = Recruitments_status::where('recruitments_status.status',2)->get(); 
    $history_b = Recruitments_status::where('recruitments_status.status',3)->get(); 
    $history_c = Recruitments_status::where('recruitments_status.status',4)->get(); 
    $history_d = Recruitments_status::where('recruitments_status.status',5)->get(); 
    $history_e = Recruitments_status::where('recruitments_status.status',6)->get(); 

    return view('pl_sidebar/news',[ 
      'history' => $history, 
      'history_a' => $history_a, 
      'history_b' => $history_b, 
      'history_c' => $history_c, 
      'history_d' => $history_d, 
      'history_e' => $history_e 
    ]); 
} 

如何簡化這個ORM碼?

+1

什麼是您在「精簡」你的代碼的目的?你認爲什麼是錯的?你想達到什麼目的? – Wader

+0

@Wader謝謝你的回覆,我的代碼太長了,很多查詢,我想簡化這個代碼.. – Bruce

回答

3

您的代碼會產生多個查詢這是不好的做法。你可以得到一個集合:

public function news(Request $request) 
{ 
    return view('pl_sidebar/news', [ 
     'history' => Recruitments_status::whereIn('status', [1, 2, 3, 4, 5, 6]) 
    ]); 
} 

然後在刀片模板中使用這個集合:

@foreach ($history->where('status', 1) as $single) 
    {{ $single->status }} 
    {{ $single->id }} 
@endforeach 
+1

哦!非常感謝你!這是一個很好的幫助! – Bruce

3

使用whereIN

->whereIn('id', [1, 2, 3])->get(); 

所以,

$history = Recruitments_status::whereIn('recruitments_status.status',[1,2,3,4,5,6])->get(); 
+1

謝謝!這幫助我! – Bruce