2017-04-19 55 views
0

我有这个分页程序实例返回:Laravel 5.3 - 将项目添加到分页数据?

$products = 
{ 
    "products": 3, 
    "per_page": 10, 
    "current_page": 1, 
    "data": [ 
    { 
     "id": 4, 
     "product_type": "electronic", 
     "product_id": 6 
    }, 
    { 
     "id": 6, 
     "type": "electronic", 
     "product_id": 5 
    }, 
    { 
     "id": 9, 
     "type": "kitchen", 
     "product_id": 4 
    } 
    ] 
} 

我试图将项目作为第一项添加到data关键是这样的:

$firstItem = { 
    "item": "should be first in data", 
    "code": 12345 
} 

最终的结果应该是这样的:

$products = 
{ 
    "products": 3, 
    "per_page": 10, 
    "current_page": 1, 
    "data": [ 
    {         <- 
     "item": "should be first in data", <- 
     "code": 12345      <- 
    },         <- 
    { 
     "id": 4, 
     "product_type": "electronic", 
     "product_id": 6 
    }, 
    { 
     "id": 6, 
     "type": "electronic", 
     "product_id": 5 
    }, 
    { 
     "id": 9, 
     "type": "kitchen", 
     "product_id": 4 
    } 
    ] 
} 

我已经尝试了很多方法,但都没有得到结果。 任何想法如何完成最终结果?

+0

你有没有尝试一旦你分页数据'array_unshift($ products ['data'],$ firstItem)'? – jfadich

+0

是的,这给了我'Illuminate \\ Pagination \\ LengthAwarePaginator超负荷元素的间接修改' – Wonka

+1

您需要从'LengthAwarePaginator'实例获取数据作为数组。尝试做'$ products = $ products-> toArray()'然后执行我最初发布的代码。 – jfadich

回答

1

如果您有分页结果$products的实例,那么你可以使用类似下面的前面加上一个新的项目为数据,例如:

// Get the paginated data 
$products = \App\Product::paginate(10); 

// Create a new item and populate 
$item = new \StdClass; 
$item->item = "should be first in data"; 
$item->code = 12345; 

// Insert the new item at top 
$products->prepend($item); 

就是这样。新的StdClass(不是一个雄辩的模型)项目将被置于顶部。

+1

'prepend'使它更容易。谢谢! – Wonka