I have this collection from a database where I have a column called "event_date".
What I want is just to get only the day names from that column that comes in a collection.
I know you can use Carbon to get the name days through, for example, a method called ->format()
, however I get an error saying that this method does not exist.
My code so far is as follows:
$collection = MyModel::all();
Inside there is the "event_date" property or column. From that, I want to get the names of the days to put them into an array or collection and finally count those days frequencies.
In order to achieve this I have tried the following:
I tried the ->pluck()
method as follows:
$filtered = collect([
'myDates'=>$collection->pluck('event_date'),
]);
And the dd($filtered)
looks like as follows:
Collection {#209 ▼
#items: array:1 [▼
"myDates" => Collection {#243 ▼
#items: array:30 [▼
0 => Carbon {#244 ▼
+"date": "2017-02-05 00:00:00.000000"
+"timezone_type": 3
+"timezone": "America/Mexico_City"
}
1 => Carbon {#218 ▼
+"date": "2017-01-15 00:00:00.000000"
+"timezone_type": 3
+"timezone": "America/Mexico_City"
}
2 => Carbon {#250 ▼
+"date": "2016-09-25 00:00:00.000000"
+"timezone_type": 3
+"timezone": "America/Mexico_City"
}
3 => Carbon {#249 ▼
+"date": "2016-05-22 00:00:00.000000"
+"timezone_type": 3
+"timezone": "America/Mexico_City"
}
...
I tried to get the day names as follows:
$Daynames = $filtered->each(function($item,$key){
return $item->myDates->format('l');
});
But I got the following error:
Undefined property: Illuminate\Support\Collection::$myDates
Any ideas to get only the daynames into an array or collection? Is there another way to do this?
The simplest use of the Carbon class is to read the current date and time. Open the datetimeController. php file and replace the content with the following script. The now() function of the Carbon class has been used in the script to read the current date and time.
You're calling format() on the collection of dates, while you should call it on the Carbon objects. You need another loop that would go through all dates in myDates collection and format them, e.g.:
$Daynames = [];
$filtered->each(function($item,$key) use (&$Daynames) {
$item->each(function($date) use (&$Daynames) {
$Daynames[] = $date->format('l');
});
});
By Carbon library we can get it easly.
Use Library
use Carbon\Carbon;
Get date
$date = '2018-11-15';
$d = new DateTime($date);
$d->format('l'); //pass l for lion aphabet in format
Output is Thursday
.
It worked for me in laravel
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With