Laravel 5.4 跳过 Pluck 数组中的第一个值

问题描述 投票:0回答:2

我有这个疑问

$orderStates = OrderState::listsTranslations( 'states' )->pluck( 'states', 'id' )->toArray();

它将输出类似的内容

array:3 [▼
  1 => "waiting"
  2 => "agreed"
  3 => "canceled"
]

我需要跳过第一个,就像这样

array:3 [▼
      2 => "agreed"
      3 => "canceled"
    ]

请问如何做到这一点?

php arrays laravel laravel-5 pluck
2个回答
0
投票

有多种方法可以实现这一目标。对我来说似乎不太一致的一个方法是使用

skip(1)
(这期望查询按
id
排序,并且始终需要跳过带有
id = 1
的条目):

$orderStates = OrderState::listsTranslations( 'states' )
    ->skip(1)
    ->pluck( 'states', 'id' )
    ->toArray();

另一种方法可能是使用

whereNotIn()
排除特定的
ids
:

$orderStates = OrderState::listsTranslations( 'states' )
    ->whereNotIn('id', [1])
    ->pluck( 'states', 'id' )
    ->toArray();

您也可以使用

where('id', '!=', 1)
代替
whereNotIn('id', [1])
skip(1)
,但我个人认为
whereNotIn
为未来提供了最大的可扩展性。


0
投票

首先感谢 Nameshek 的指导,但

skip(1)
无法使用此方法,但
slice(1)
可以

这是最后一个查询

$orderStates = OrderState::listsTranslations( 'states' )
                                 ->pluck( 'states', 'id' )
                                 ->slice( 1 )
                                 ->toArray();

效果很好。

© www.soinside.com 2019 - 2024. All rights reserved.