I am trying to duplicate an item in a collection based on the date range. For example, I have a JSON of this:
{
"title": " 200",
"start": "2017-12-20",
"endx": "2017-12-25",
"equipment": "Chairs",
"quantity": 200
}
Now I want to duplicate 6x because there are 6 days from 12-20 to 12-25. Like this:
{
"title": " 200",
"start": "2017-12-20",
"endx": "2017-12-20",
"equipment": "Chairs",
"quantity": 200
}
{
"title": " 200",
"start": "2017-12-21",
"endx": "2017-12-21",
"equipment": "Chairs",
"quantity": 200
}
{
"title": " 200",
"start": "2017-12-22",
"endx": "2017-12-22",
"equipment": "Chairs",
"quantity": 200
}
{
"title": " 200",
"start": "2017-12-23",
"endx": "2017-12-23",
"equipment": "Chairs",
"quantity": 200
}
{
"title": " 200",
"start": "2017-12-24",
"endx": "2017-12-24",
"equipment": "Chairs",
"quantity": 200
}
{
"title": " 200",
"start": "2017-12-25",
"endx": "2017-12-25",
"equipment": "Chairs",
"quantity": 200
}
I want this because of the answer from my previous question: Repeat events on FullCalendar base on date start and end
Here is my code:
$events = Event::all();
foreach ($events as $i => $event) {
if($event->start != $event->endx)
{
$date = $event->start;
$end = $event->endx;
while (strtotime($date) <= strtotime($end)) {
$new = [];
$new = $event;
$new->start = $date;
$new->endx = $date;
$events->push($new);
$date = date ("Y-m-d", strtotime("+1 day", strtotime($date)));
}
}
}
return $events->all();
But the only output I got is that it repeats 6x based on the last date "2017-12-25". Like this:
{
"title": " 200",
"start": "2017-12-25",
"endx": "2017-12-25",
"equipment": "Chairs",
"quantity": 200
}
{
"title": " 200",
"start": "2017-12-25",
"endx": "2017-12-25",
"equipment": "Chairs",
"quantity": 200
}
{
"title": " 200",
"start": "2017-12-25",
"endx": "2017-12-25",
"equipment": "Chairs",
"quantity": 200
}
{
"title": " 200",
"start": "2017-12-25",
"endx": "2017-12-25",
"equipment": "Chairs",
"quantity": 200
}
{
"title": " 200",
"start": "2017-12-25",
"endx": "2017-12-25",
"equipment": "Chairs",
"quantity": 200
}
{
"title": " 200",
"start": "2017-12-25",
"endx": "2017-12-25",
"equipment": "Chairs",
"quantity": 200
}