Laravel Displaying Date/Count with GroupBy
up vote
1
down vote
favorite
I am trying to display a count of scripts that have been sent through for a specific doctor, broken down by month/year. However, while I can get it to display the count() correctly, I cannot get it to display the month/year.
I also would like to display months where there is no activity, if possible.
controller
$doctor = Doctor::findOrFail($id);
$script_counts = $doctor
->scripts()
->orderBy('prescribe_date', 'desc')
->get()
->groupBy(function ($script) {
return Carbon::parse($script->prescribe_date)->format('m/Y');
});
blade
@foreach ($script_counts as $script_count)
<tr>
<td>{{date('F Y', strtotime($script_count->prescribe_date))}}</td>
<td>{{$script_count->count()}}</td>
</tr>
@endforeach
Displays error: Property [prescribe_date] does not exist on this collection instance.
If I exchange the first cell where it should display January 2018 etc., and just output {{$script_count}}, it will display the full object.
php laravel eloquent
add a comment |
up vote
1
down vote
favorite
I am trying to display a count of scripts that have been sent through for a specific doctor, broken down by month/year. However, while I can get it to display the count() correctly, I cannot get it to display the month/year.
I also would like to display months where there is no activity, if possible.
controller
$doctor = Doctor::findOrFail($id);
$script_counts = $doctor
->scripts()
->orderBy('prescribe_date', 'desc')
->get()
->groupBy(function ($script) {
return Carbon::parse($script->prescribe_date)->format('m/Y');
});
blade
@foreach ($script_counts as $script_count)
<tr>
<td>{{date('F Y', strtotime($script_count->prescribe_date))}}</td>
<td>{{$script_count->count()}}</td>
</tr>
@endforeach
Displays error: Property [prescribe_date] does not exist on this collection instance.
If I exchange the first cell where it should display January 2018 etc., and just output {{$script_count}}, it will display the full object.
php laravel eloquent
2
$script_countis not a single object, it is aCollection, which is why->count()works, but->prescribe_datedoesn't. Maybe try$script_count->first()->prescribe_date?
– Tim Lewis
Nov 19 at 16:36
@TimLewis that helps, thank you! I had tried->first()at the end, but I see now why that failed. However, is there any way to display the months with no data in them and set them to 0 count?
– Xerakon
Nov 19 at 16:40
No problem. And not with the logic you currently have; you'd have to loop each month and cross-reference existence of a$script_countfor that month. So essentially an@foreach($months AS $month)combined with an@if(...)(not 100% on the logic for checking existence, you'll have to play with that) and an@elseto display non-existence.
– Tim Lewis
Nov 19 at 16:42
Or you could leverage the logic for getting$monthsto your Controller and include querying/filtering query results for the current$month, etc etc. Lots of approaches, but might be a bit broad.
– Tim Lewis
Nov 19 at 16:45
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
I am trying to display a count of scripts that have been sent through for a specific doctor, broken down by month/year. However, while I can get it to display the count() correctly, I cannot get it to display the month/year.
I also would like to display months where there is no activity, if possible.
controller
$doctor = Doctor::findOrFail($id);
$script_counts = $doctor
->scripts()
->orderBy('prescribe_date', 'desc')
->get()
->groupBy(function ($script) {
return Carbon::parse($script->prescribe_date)->format('m/Y');
});
blade
@foreach ($script_counts as $script_count)
<tr>
<td>{{date('F Y', strtotime($script_count->prescribe_date))}}</td>
<td>{{$script_count->count()}}</td>
</tr>
@endforeach
Displays error: Property [prescribe_date] does not exist on this collection instance.
If I exchange the first cell where it should display January 2018 etc., and just output {{$script_count}}, it will display the full object.
php laravel eloquent
I am trying to display a count of scripts that have been sent through for a specific doctor, broken down by month/year. However, while I can get it to display the count() correctly, I cannot get it to display the month/year.
I also would like to display months where there is no activity, if possible.
controller
$doctor = Doctor::findOrFail($id);
$script_counts = $doctor
->scripts()
->orderBy('prescribe_date', 'desc')
->get()
->groupBy(function ($script) {
return Carbon::parse($script->prescribe_date)->format('m/Y');
});
blade
@foreach ($script_counts as $script_count)
<tr>
<td>{{date('F Y', strtotime($script_count->prescribe_date))}}</td>
<td>{{$script_count->count()}}</td>
</tr>
@endforeach
Displays error: Property [prescribe_date] does not exist on this collection instance.
If I exchange the first cell where it should display January 2018 etc., and just output {{$script_count}}, it will display the full object.
php laravel eloquent
php laravel eloquent
edited Nov 19 at 18:15
miken32
23.1k84671
23.1k84671
asked Nov 19 at 16:33
Xerakon
568
568
2
$script_countis not a single object, it is aCollection, which is why->count()works, but->prescribe_datedoesn't. Maybe try$script_count->first()->prescribe_date?
– Tim Lewis
Nov 19 at 16:36
@TimLewis that helps, thank you! I had tried->first()at the end, but I see now why that failed. However, is there any way to display the months with no data in them and set them to 0 count?
– Xerakon
Nov 19 at 16:40
No problem. And not with the logic you currently have; you'd have to loop each month and cross-reference existence of a$script_countfor that month. So essentially an@foreach($months AS $month)combined with an@if(...)(not 100% on the logic for checking existence, you'll have to play with that) and an@elseto display non-existence.
– Tim Lewis
Nov 19 at 16:42
Or you could leverage the logic for getting$monthsto your Controller and include querying/filtering query results for the current$month, etc etc. Lots of approaches, but might be a bit broad.
– Tim Lewis
Nov 19 at 16:45
add a comment |
2
$script_countis not a single object, it is aCollection, which is why->count()works, but->prescribe_datedoesn't. Maybe try$script_count->first()->prescribe_date?
– Tim Lewis
Nov 19 at 16:36
@TimLewis that helps, thank you! I had tried->first()at the end, but I see now why that failed. However, is there any way to display the months with no data in them and set them to 0 count?
– Xerakon
Nov 19 at 16:40
No problem. And not with the logic you currently have; you'd have to loop each month and cross-reference existence of a$script_countfor that month. So essentially an@foreach($months AS $month)combined with an@if(...)(not 100% on the logic for checking existence, you'll have to play with that) and an@elseto display non-existence.
– Tim Lewis
Nov 19 at 16:42
Or you could leverage the logic for getting$monthsto your Controller and include querying/filtering query results for the current$month, etc etc. Lots of approaches, but might be a bit broad.
– Tim Lewis
Nov 19 at 16:45
2
2
$script_count is not a single object, it is a Collection, which is why ->count() works, but ->prescribe_date doesn't. Maybe try $script_count->first()->prescribe_date?– Tim Lewis
Nov 19 at 16:36
$script_count is not a single object, it is a Collection, which is why ->count() works, but ->prescribe_date doesn't. Maybe try $script_count->first()->prescribe_date?– Tim Lewis
Nov 19 at 16:36
@TimLewis that helps, thank you! I had tried
->first() at the end, but I see now why that failed. However, is there any way to display the months with no data in them and set them to 0 count?– Xerakon
Nov 19 at 16:40
@TimLewis that helps, thank you! I had tried
->first() at the end, but I see now why that failed. However, is there any way to display the months with no data in them and set them to 0 count?– Xerakon
Nov 19 at 16:40
No problem. And not with the logic you currently have; you'd have to loop each month and cross-reference existence of a
$script_count for that month. So essentially an @foreach($months AS $month) combined with an @if(...) (not 100% on the logic for checking existence, you'll have to play with that) and an @else to display non-existence.– Tim Lewis
Nov 19 at 16:42
No problem. And not with the logic you currently have; you'd have to loop each month and cross-reference existence of a
$script_count for that month. So essentially an @foreach($months AS $month) combined with an @if(...) (not 100% on the logic for checking existence, you'll have to play with that) and an @else to display non-existence.– Tim Lewis
Nov 19 at 16:42
Or you could leverage the logic for getting
$months to your Controller and include querying/filtering query results for the current $month, etc etc. Lots of approaches, but might be a bit broad.– Tim Lewis
Nov 19 at 16:45
Or you could leverage the logic for getting
$months to your Controller and include querying/filtering query results for the current $month, etc etc. Lots of approaches, but might be a bit broad.– Tim Lewis
Nov 19 at 16:45
add a comment |
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53378996%2flaravel-displaying-date-count-with-groupby%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53378996%2flaravel-displaying-date-count-with-groupby%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
2
$script_countis not a single object, it is aCollection, which is why->count()works, but->prescribe_datedoesn't. Maybe try$script_count->first()->prescribe_date?– Tim Lewis
Nov 19 at 16:36
@TimLewis that helps, thank you! I had tried
->first()at the end, but I see now why that failed. However, is there any way to display the months with no data in them and set them to 0 count?– Xerakon
Nov 19 at 16:40
No problem. And not with the logic you currently have; you'd have to loop each month and cross-reference existence of a
$script_countfor that month. So essentially an@foreach($months AS $month)combined with an@if(...)(not 100% on the logic for checking existence, you'll have to play with that) and an@elseto display non-existence.– Tim Lewis
Nov 19 at 16:42
Or you could leverage the logic for getting
$monthsto your Controller and include querying/filtering query results for the current$month, etc etc. Lots of approaches, but might be a bit broad.– Tim Lewis
Nov 19 at 16:45