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.










share|improve this question




















  • 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












  • @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










  • 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















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.










share|improve this question




















  • 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












  • @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










  • 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













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.










share|improve this question















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 19 at 18:15









miken32

23.1k84671




23.1k84671










asked Nov 19 at 16:33









Xerakon

568




568








  • 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












  • @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










  • 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














  • 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












  • @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










  • 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








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

















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
});


}
});














draft saved

draft discarded


















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
















draft saved

draft discarded




















































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.




draft saved


draft discarded














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





















































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







Popular posts from this blog

Paul Cézanne

UIScrollView CustomStickyHeader Resize height generates problems when scroll is too fast

Angular material date-picker (MatDatepicker) auto completes the date on focus out