如何简化 Laravel ORM
Posted
技术标签:
【中文标题】如何简化 Laravel ORM【英文标题】:How to streamline Laravel ORM 【发布时间】:2016-11-08 10:04:47 【问题描述】:对不起,这个问题太愚蠢了..
我用的是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 代码?
【问题讨论】:
您“精简”代码的目的是什么?你觉得哪里不对?你想达到什么目的? @Wader 谢谢你的回复,我的代码很长而且有很多查询,我想精简这段代码.. 【参考方案1】:您的代码将生成多个查询,这是不好的做法。你可以得到一个集合:
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
【讨论】:
哦!非常感谢你!这是一个很大的帮助!【参考方案2】:使用whereIN
->whereIn('id', [1, 2, 3])->get();
所以,
$history = Recruitments_status::whereIn('recruitments_status.status',[1,2,3,4,5,6])->get();
【讨论】:
以上是关于如何简化 Laravel ORM的主要内容,如果未能解决你的问题,请参考以下文章