我正在使用Laravel Collections方法,并尝试通过id键入我的查询结果(这是一个集合).问题是我有多个具有相同ID的条目,但指向不同的国家/地区,我希望拥有所有值,而不仅仅是最后一个.
这是我到目前为止使用的代码:
$allCountries = new Collection($allCountries);
$offerCountries = $allCountries->keyBy('id');
dd($offerCountries);
foreach ($offer as $o) {
$o->countries = $allCountries->get($o->id);
}
为了解释,我的查询将结果放在$allCountries中,其中包含id和country,这些结果看起来像这样
id=>225, country=>US
id=>225, country=>IT
id=>3304, country=>NZ
只是为了给你一个快速的想法.我想通过导致$offerCountries的id来键入这个.然后我循环通过之前的Collection,其中包含具有与id的国家/地区结果相关的特定ID的商品.因此,对于报价225,它包含的国家是美国和IT.我遍历每个商品,并将countries对象设置为等于所有$allCountries id.我在这里遇到的问题是keyBy覆盖了值,只占用了最后一个.我希望得到这样的结果:
[
225 => countries: {'id' => 225, 'country' => 'US'}, {'id' =>
'225', 'country' => 'IT'}
3304 => ['id' => 3304, 'country' => 'NZ'],
]
是否有laravel方法来执行此操作,或者我是否需要编写自己的keyBy以便它不会覆盖.如果是这样,我该如何开始编写这个方法?
谢谢