【发布时间】:2020-09-01 18:49:51
【问题描述】:
我是 Laravel 的菜鸟,我想以“自动”的方式从数据库中检索数据。我有一个查询,可以获取“状态”是最新重复的关键“案例”的值
$pieWyoming=State::select('cases')->where('state', '=', 'Wyoming')->orderByDesc('id')->limit(1)->get()->sum('cases');
但我想用 whereIn 来做这个
$statesArr = array("Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "District of Columbia", "Florida", "Georgia", "Guam", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota", "Northern Mariana Islands", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Puerto Rico", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virgin Islands", "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming");
$Wyoming=State::select('cases')->whereIn('state',$statesArr)->orderByDesc('id')->limit(1)->get()->sum('cases');
但似乎这个遍历 $statesArr 并且只获得最后一个值,这是正确的,但只是一个状态的一个值,我想要来自所有状态的所有值
编辑、样本数据和预期输出
数据库保存数据为https://res.cloudinary.com/dcdajhifi/image/upload/v1599003808/ex1_ys5ksi.png
我只想获取数组 $statesArr 中每个状态的字段“cases”的值,每个状态应该是最后一个重复的,例如 https://res.cloudinary.com/dcdajhifi/image/upload/v1599003808/ex2_lby8md.png
这是 ALABAMA 最后一次出现,所以我想获取该行的案例值,每个州的 THIS。所以我可以创建一个面板,我可以在其中显示州名称及其价值案例和死亡人数,而无需对每个州进行查询。
【问题讨论】:
-
这不是whereIn() 的行为。 whereIn() 将匹配提供的数组中的任何值。
-
尝试删除 whereIn 语句中的 limit()
-
@KurtFriars 但我怎样才能保存那场比赛?
-
你想从数组中的每个状态获取最新的行吗?
-
@MKhalidJunaid 当然,你可以检查我的编辑
标签: laravel eloquent greatest-n-per-group laravel-7