将简单数组添加到Collection

时间:2016-04-17 10:13:22

标签: php laravel

在laravel中,此方法返回Collection类型的结果:

$all_currency = CurrencyType::lists('currency_type', 'id');

结果:

Collection {#687 ▼
  #items: array:2 [▼
    1 => "EUR"
    2 => "CHF"
  ]
}

现在我想添加-1 => "USD"。但我不能这样做。我的解决方案创建嵌套数组。例如:

$all_currency->push (["-1"=>"11"]);

结果:

Collection {#687 ▼
  #items: array:4 [▼
    1 => "EUR"
    2 => "CHF"
    3 => array:1 [▼
      -1 => "USD"
    ]
  ]
}

3 个答案:

答案 0 :(得分:0)

在添加货币之前,您是否尝试将集合转换为数组?

否则,检查Collection类的接口可能会有所帮助。既然你没有提到它,它可能是Doctrine或Propel或其他什么东西?

然后您可能会发现,添加键值对有一个特殊功能,因为推送一个值,将该值(在您的情况下为一个数组)添加到您不想要的集合中。

可能无法向特定键索引-1添加值,这取决于您实际使用的ORM及其实现。

//编辑:

似乎放置了正确的方法,代码应如下所示:

$all_currency->push (-1, "11");

https://laravel.com/api/master/Illuminate/Support/Collection.html#method_put

答案 1 :(得分:0)

如果您需要使用数组,可以尝试使用toArray()方法将集合转换为数组:

$all_currency = CurrencyType::pluck('currency_type', 'id')->toArray();
$all_currency['-1'] = '11';

如果您需要使用集合,请使用put() helper:

$all_currency = CurrencyType::pluck('currency_type', 'id')->put('-1', '11');

此外,lists()已弃用,将来也会被移除,请改用pluck()

答案 2 :(得分:0)

在您的收藏中使用put()方法:

$all_currency->put(-1, "USD");

您可以在此处查看所有可用的收藏方法:Collections