在我的电子商务web应用程序中,我正在尝试实现国际航运功能.这种关系就像:
一个国际航运区hasMany国家和一个国家belongsTo船舶区。
一个国际船运区hasMany船运费率和一个船费belongsTo一个船运区。
现在,我想要做的是获取所有的运费,这些运费是按降序创建的。直到现在,我可以正确地获取它,没有任何问题。现在来了twist。如果表中有一个传送率具有相同的传送率代码,则根据前端用户将选择的国家,获取最新记录并忽略前一记录。
我试过的密码:
$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()
我知道我肯定是犯了一些愚蠢的错误,但我找不出是什么错误,哪里错了。
请帮我解决这个问题。我试着解决这个问题已经有两天了,但是还没有成功。
任何帮助都是非常感谢的。提前谢谢你。
发布于 2016-05-23 06:44:48
好的,latest方法只是用于排序。如果您只想获取最新的一条记录,就必须将get (这里有一个有序的集合)更改为first
$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();
}https://stackoverflow.com/questions/37382630
复制相似问题