How to optimize Laravel ORM

Sorry, so stupid question ..

I use Controller, has a lot of ORM, I want to arrange this code.

my 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
    ]);
}

How to arrange this ORM code?

+4
source share
2 answers

Your code will generate multiple requests, which is bad practice. You can get the collection:

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

Then in the Blade template use this collection:

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

Use whereIN

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

So,

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

Source: https://habr.com/ru/post/1660166/


All Articles