我有一个原始查询:
$data = Product::hydrateRaw(//sql here);
这将返回一个集合。
然后我执行进一步的查询:
$data2 = Product::take(3)->get();
然后,我希望合并这两个集合:
$data->merge($data2);
不幸的是,合并似乎没有任何效果,当我DD()集合只包含$的数据,而不是$数据2。
我要去哪里错了?
我有一个原始查询:
$data = Product::hydrateRaw(//sql here);
这将返回一个集合。
然后我执行进一步的查询:
$data2 = Product::take(3)->get();
然后,我希望合并这两个集合:
$data->merge($data2);
不幸的是,合并似乎没有任何效果,当我DD()集合只包含$的数据,而不是$数据2。
我要去哪里错了?
现在,使用产品时::你会得到与拥有使用get或任何其他关系的结果雄辩的收藏对象。 这里的好处是,你实际上可以选择和定制,而不是使用普通数组或别的东西你的收藏。
在这里阅读更多详细信息: http://laravel.com/docs/5.1/eloquent-collections#available-methods 。 你有很多可用的方法为您收集口才对象,其中之一是“合并”。
请小心的是“合并”功能不会修改当前的收藏$的数据。 取而代之的是,它只是返回你合并集合,就是这样。
$mergeData = $data->merge($data2)
如果仍然没有解决您的需求,随意创建自定义集合,并只需创建一个新的方法有,如:
public function merge(Collection $collection) {
foreach ($collection as $item)
{
$this->items[$item->getKey()] = $item;
}
//Now this will change your current Collection
}
或与阵列,并且不需要任何水化使用它
public function merge(array $firstResults) {
//Do your logic of merging $firstResults with your current collection
}
问题是,现有的“合并”的方法,只接受数组作为参数,并把所得的数组不包含任何关系。
此外,不幸的是水合物没有任何滋润你的关系,所以这可能是这里的大或小的障碍。
除此之外,祝你好运。
尝试这个:
$data2 = Product::take(3)->get()->toArray();
$data->merge($data2);
看到这里 。