稍后升级Laravel版本我发现Collection::merge
方法效果不佳。
不确定是否是我的问题,我找不到错误。让我们看一些信息:
print_r($ecb->count());
print_r($boc->count());
// merge both
$cubes = $ecb->merge($boc);
print_r($cubes->count());
dd();
输出:
36 27 1
合并应该给出类似输出36 + 27(集合上没有重复元素)
更多调试信息:
print_r($ecb->toArray());
print_r($boc->toArray());
// merge both
$cubes = $ecb->merge($boc);
print_r($cubes->toArray());
dd();
输出(有点长):http://laravel.io/bin/PdVj1#7
有什么想法吗? 感谢
答案 0 :(得分:1)
是的 - 它似乎在4到4.1之间发生了变化
请参阅此Github问题:https://github.com/laravel/framework/issues/3445
本质上,Eloquent集合在合并时会删除具有重复主键的模型。
我正在运行Laravel 4.1.29 - 我使用count()获得了不同的输出 - 但实际上它只是删除了重复的ID。
答案 1 :(得分:1)
我在Laravel 4.1中看到合并删除元素具有相同的ID(https://github.com/laravel/framework/issues/3445)
为了获得相同的行为,我应该像这样更改代码:
$boc->each(function($cube) use ($ecb)
{
$ecb->push($cube);
});
答案 2 :(得分:0)
合并功能使用Model#getKey()
来区分不同的模型 - 您使用的模型是否正确指定了主键?我注意到他们没有标准id
字段。