繁体   English   中英

如何简化Laravel ORM

[英]How to streamline Laravel ORM

对不起,是这么愚蠢的问题..

我使用Controller,有很多ORM,我想简化这段代码。

我的控制器

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代码?

使用whereIN

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

所以,

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

您的代码将生成多个查询,这是不好的做法。 你可以得到一个集合:

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

然后在Blade模板中使用此集合:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM