2016-11-08 2 views
4

Простите, так глупый вопрос ..Как оптимизировать Laravel ORM

Я использую контроллер, имеет много 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

Смежные вопросы