首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于created_at时间域的Laravel获取最新记录

基于created_at时间域的Laravel获取最新记录
EN

Stack Overflow用户
提问于 2016-05-23 04:23:45
回答 1查看 397关注 0票数 0

在我的电子商务web应用程序中,我正在尝试实现国际航运功能.这种关系就像:

一个国际航运区hasMany国家和一个国家belongsTo船舶区。

一个国际船运区hasMany船运费率和一个船费belongsTo一个船运区。

现在,我想要做的是获取所有的运费,这些运费是按降序创建的。直到现在,我可以正确地获取它,没有任何问题。现在来了twist。如果表中有一个传送率具有相同的传送率代码,则根据前端用户将选择的国家,获取最新记录并忽略前一记录。

我试过的密码:

代码语言:javascript
复制
$shippingCountryId = session()->get('new_shipping_country');
$shippingCountryAmount = session()->get('new_shipping_amount');

if ($shippingCountryId !== null) {
    $shippingAll = ShippingCountry::find($shippingCountryId)
                                    ->zone->rates()
                                    ->latest()->get();
} else {
    $shippingAll = ShippingCountry::where('name', 'India')->first()
                                    ->zone->rates()
                                    ->latest()->get();
}

当用户选择发货国时,上面的代码从该发货区的费率表中获取所有记录,我不想这样做。如果在同一代码中找到多个记录,我只希望获取最新的记录。

收集方法对我不起作用:

unique()contains()search()filter()

我知道我肯定是犯了一些愚蠢的错误,但我找不出是什么错误,哪里错了。

请帮我解决这个问题。我试着解决这个问题已经有两天了,但是还没有成功。

任何帮助都是非常感谢的。提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2016-05-23 06:44:48

好的,latest方法只是用于排序。如果您只想获取最新的一条记录,就必须将get (这里有一个有序的集合)更改为first

代码语言:javascript
复制
$shippingCountryId = session()->get('new_shipping_country');
$shippingCountryAmount = session()->get('new_shipping_amount');

if ($shippingCountryId !== null) {
    $latestRate = ShippingCountry::find($shippingCountryId)
                                    ->zone->rates()
                                    ->latest()->first();
} else {
    $latestRate = ShippingCountry::where('name', 'India')->first()
                                    ->zone->rates()
                                    ->latest()->first();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37382630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档