我有这个疑问
$orderStates = OrderState::listsTranslations( 'states' )->pluck( 'states', 'id' )->toArray();
它将输出类似的内容
array:3 [▼
1 => "waiting"
2 => "agreed"
3 => "canceled"
]
我需要跳过第一个,就像这样
array:3 [▼
2 => "agreed"
3 => "canceled"
]
请问如何做到这一点?
有多种方法可以实现这一目标。对我来说似乎不太一致的一个方法是使用
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
为未来提供了最大的可扩展性。
首先感谢 Nameshek 的指导,但
skip(1)
无法使用此方法,但 slice(1)
可以
这是最后一个查询
$orderStates = OrderState::listsTranslations( 'states' )
->pluck( 'states', 'id' )
->slice( 1 )
->toArray();
效果很好。