gpt4 book ai didi

php - Laravel 5.4 查询生成器使用 groupBy 实现 orderBy

转载 作者:行者123 更新时间:2023-11-28 23:11:48 25 4
gpt4 key购买 nike

我想操纵如何使用成本分层方法(例如 LIFOFIFO)显示数据。

首先,这是我的查询:

$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();

我想将 groupByref_code 一起使用,这样它只会显示具有相同 ref_code 的一个数据,我使用了 orderBy created_atdsc 用于descending 以便显示的数据将是最后添加的数据。 (好吧,这就是我认为会发生的事情)。

但不幸的是,当我使用 groupBy 时,它只显示第一个添加的数据。如何选择最后的数据?我以为 orderBy 会完成这项工作,但事实并非如此。

最佳答案

您可以为此使用替代方法。如果你有自动递增的主键作为 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();

这样你就会得到你想要的结果。

关于php - Laravel 5.4 查询生成器使用 groupBy 实现 orderBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45670701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com