Reputation: 1344
i'm trying to load events into a calendar.
Therefore i need to make a JSONstring with the event data but i can't figure out how to do this.
how i create the data:
$tickets = Ticket::where('mechanic_id', $request->mechanic_id)->get();
$tickets_json[] = [];
foreach($tickets as $ticket) {
$tickets_json['title'] = $ticket->number;
$tickets_json['start'] = $ticket->planned_timestamp_start->format('d-m-Y H:i');
$tickets_json['end'] = $ticket->planned_timestamp_end->format('d-m-Y H:i');
$tickets_json['url'] = '/tickets/' . $ticket->id;
}
This returns:
array:5 [▼
0 => []
"title" => "452"
"start" => "27-10-2017 09:00"
"end" => "27-10-2017 12:00"
"url" => "/tickets/2"
]
This is not what i want and need.
I need it like this :
{
title: '63782136',
start: '27-10-2017 09:00',
end: '"27-10-2017 12:00"',
url: '/tickets/2'
},
{
title: '23123',
start: '27-10-2017 09:00',
end: '"27-10-2017 12:00"',
url: '/tickets/3'
},
{
title: '432512',
start: '27-10-2017 09:00',
end: '"27-10-2017 12:00"',
url: '/tickets/4'
},
I have tried:
return response()->json($tickets_json);
But doesn't return the correct format:
#data: "{"0":[],"title":"452","start":"27-10-2017 09:00","end":"27-10-2017 12:00","url":"\/tickets\/2"}"
It adds {"0":[],} .
Thanks in advance.
Upvotes: 0
Views: 422
Reputation: 2031
You're making the mistake of assigning your data to the first dimension of the array when you want it in the second dimension. The following should do the trick:
$tickets_json = [];
$tickets->each(function ($ticket) use (&$tickets_json) {
$tickets_json[] = [
'title' => $ticket->numer,
'start' => $ticket->planned_timestamp_start->format('d-m-Y H:i'),
'end' => $ticket->planned_timestamp_end->format('d-m-Y H:i'),
'url' => '/tickets/' . $ticket->id
];
});
return $tickets_json;
This code will give you a proper formatted array which you can use to get the following JSON output:
[
{
"title": "63782136",
"start": "27-10-2017 09:00",
"end": "27-10-2017 12:00",
"url": "/tickets/2"
},
{
"title": "23123",
"start": "27-10-2017 09:00",
"end": "27-10-2017 12:00",
"url": "/tickets/3"
}
]
Upvotes: 3