我想操纵如何使用成本分层方法显示数据,例如 LIFO 和 FIFO 。
要开始使用,请点击query
:
$items = Inventory::whereActive('1')
->where('quantity', '>', 0)
->where(function($query) use($request) {
$query->where('name', 'LIKE', '%'.$request->search.'%')
->orwhere('ref_code', 'LIKE', '%'.$request->search.'%');
})->orderBy('created_at', 'dsc')
->groupBy('ref_code')
->get();
我想将groupBy
与ref_code
一起使用,因此它只展示一个具有相同ref_code
的数据,并且orderBy
使用created_at
和{ {1}} 降序,以便将显示的一个数据将是最后添加的数据。 (嗯,这就是我认为会发生的事情)。
但不幸的是,当我使用dsc
时,它只显示第一个添加的数据。如何选择最后的数据?我以为groupBy
会完成这项工作,但事实并非如此。
答案 0 :(得分:1)
您可以使用替代方法。如果您将主键自动递增为id
,那么您可以这样做,
$ids = Inventory::whereActive('1')
->where('quantity', '>', 0)
->where(function($query) use($request) {
$query->where('name', 'LIKE', '%'.$request->search.'%')
->orwhere('ref_code', 'LIKE', '%'.$request->search.'%');
})
->select('ref_code',\DB::raw('MAX(id) as ID'))
->groupBy('ref_code')
->pluck('ID');
现在,将项目设为
$items = Inventory::whereIn('id',$ids)->get();
因此,您将获得理想的结果。