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

时间:2018-04-22 14:13:59

标签: arrays laravel laravel-5.4 pluck

我有这个查询

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

将输出类似

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

我需要跳过第一个类似

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

请问如何做到这一点?

2 个答案:

答案 0 :(得分:1)

首先感谢Namoshek指南,但skip(1)无效,但slice(1)做了

这是最后一个查询

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

工作得很好。

答案 1 :(得分:0)

有多种方法可以实现这一目标。对我来说似乎不太一致的一种方法是使用skip(1)(这要求查询按id排序,并且始终需要跳过id = 1的条目:< / p>

$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为将来提供了最大的可扩展性。