Count Multiple Models in Laravel
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
I have multiple models: User, Track, Tutorial, Chapter, Lesson, & SolvedLesson.
Below is what I've done to for counting each model.
$data = [
'userCount' => AppUser::count(),
'userRegisteredToday' => AppUser::whereCreatedAt(date('Y-m-d'))->count(),
'trackCount' => AppModelsTrack::count(),
'tutorialCount' => AppModelsTutorial::count(),
'chapterCount' => AppModelsChapter::count(),
'lessonCount' => AppModelsLesson::count(),
'solvedLessonCount' => AppModelsSolvedLesson::count(),
];
Laravel provides relationships and eager loading to efficiently query.
Is there any method to convert the above query into one single query for better performance?
php laravel eloquent laravel-query-builder
add a comment |
I have multiple models: User, Track, Tutorial, Chapter, Lesson, & SolvedLesson.
Below is what I've done to for counting each model.
$data = [
'userCount' => AppUser::count(),
'userRegisteredToday' => AppUser::whereCreatedAt(date('Y-m-d'))->count(),
'trackCount' => AppModelsTrack::count(),
'tutorialCount' => AppModelsTutorial::count(),
'chapterCount' => AppModelsChapter::count(),
'lessonCount' => AppModelsLesson::count(),
'solvedLessonCount' => AppModelsSolvedLesson::count(),
];
Laravel provides relationships and eager loading to efficiently query.
Is there any method to convert the above query into one single query for better performance?
php laravel eloquent laravel-query-builder
2
Could you also provide the relationship between this models? I think a couple of counts can be avoided..
– HCK
Jan 4 at 4:53
1
what are you trying to achieve. its just the count of each model in dashboard
– Manojkiran.A
Jan 4 at 5:23
add a comment |
I have multiple models: User, Track, Tutorial, Chapter, Lesson, & SolvedLesson.
Below is what I've done to for counting each model.
$data = [
'userCount' => AppUser::count(),
'userRegisteredToday' => AppUser::whereCreatedAt(date('Y-m-d'))->count(),
'trackCount' => AppModelsTrack::count(),
'tutorialCount' => AppModelsTutorial::count(),
'chapterCount' => AppModelsChapter::count(),
'lessonCount' => AppModelsLesson::count(),
'solvedLessonCount' => AppModelsSolvedLesson::count(),
];
Laravel provides relationships and eager loading to efficiently query.
Is there any method to convert the above query into one single query for better performance?
php laravel eloquent laravel-query-builder
I have multiple models: User, Track, Tutorial, Chapter, Lesson, & SolvedLesson.
Below is what I've done to for counting each model.
$data = [
'userCount' => AppUser::count(),
'userRegisteredToday' => AppUser::whereCreatedAt(date('Y-m-d'))->count(),
'trackCount' => AppModelsTrack::count(),
'tutorialCount' => AppModelsTutorial::count(),
'chapterCount' => AppModelsChapter::count(),
'lessonCount' => AppModelsLesson::count(),
'solvedLessonCount' => AppModelsSolvedLesson::count(),
];
Laravel provides relationships and eager loading to efficiently query.
Is there any method to convert the above query into one single query for better performance?
php laravel eloquent laravel-query-builder
php laravel eloquent laravel-query-builder
edited Jan 4 at 5:53
Karl Hill
3,49132446
3,49132446
asked Jan 4 at 4:47
AslamAslam
139213
139213
2
Could you also provide the relationship between this models? I think a couple of counts can be avoided..
– HCK
Jan 4 at 4:53
1
what are you trying to achieve. its just the count of each model in dashboard
– Manojkiran.A
Jan 4 at 5:23
add a comment |
2
Could you also provide the relationship between this models? I think a couple of counts can be avoided..
– HCK
Jan 4 at 4:53
1
what are you trying to achieve. its just the count of each model in dashboard
– Manojkiran.A
Jan 4 at 5:23
2
2
Could you also provide the relationship between this models? I think a couple of counts can be avoided..
– HCK
Jan 4 at 4:53
Could you also provide the relationship between this models? I think a couple of counts can be avoided..
– HCK
Jan 4 at 4:53
1
1
what are you trying to achieve. its just the count of each model in dashboard
– Manojkiran.A
Jan 4 at 5:23
what are you trying to achieve. its just the count of each model in dashboard
– Manojkiran.A
Jan 4 at 5:23
add a comment |
1 Answer
1
active
oldest
votes
The withCount method allows you to count the number of results for model relationships.
Assuming you've defined a one to many relation between the User
and SolvedLesson
models:
// you can optionally alias the appended count attribute
$users = User::withCount('solvedLessons as solved_count')->get();
// total users
$users->count()
// iterate users to get the number of solved lessons for each
$users->each(function (User $user) {
// using the alias defined above
echo $user->solved_count;
});
You're not limited to a single relation either, passing an array will get the count for each relation:
$tracks = Track::withCount(['tutorials', 'users'])->get();
// total tracks
$tracks->count()
// access each relation count per track
$tracks->each(function (Track $track) {
echo $track->tutorial_count;
echo $track->user_count;
});
add a comment |
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',
autoActivateHeartbeat: false,
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%2f54033253%2fcount-multiple-models-in-laravel%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
The withCount method allows you to count the number of results for model relationships.
Assuming you've defined a one to many relation between the User
and SolvedLesson
models:
// you can optionally alias the appended count attribute
$users = User::withCount('solvedLessons as solved_count')->get();
// total users
$users->count()
// iterate users to get the number of solved lessons for each
$users->each(function (User $user) {
// using the alias defined above
echo $user->solved_count;
});
You're not limited to a single relation either, passing an array will get the count for each relation:
$tracks = Track::withCount(['tutorials', 'users'])->get();
// total tracks
$tracks->count()
// access each relation count per track
$tracks->each(function (Track $track) {
echo $track->tutorial_count;
echo $track->user_count;
});
add a comment |
The withCount method allows you to count the number of results for model relationships.
Assuming you've defined a one to many relation between the User
and SolvedLesson
models:
// you can optionally alias the appended count attribute
$users = User::withCount('solvedLessons as solved_count')->get();
// total users
$users->count()
// iterate users to get the number of solved lessons for each
$users->each(function (User $user) {
// using the alias defined above
echo $user->solved_count;
});
You're not limited to a single relation either, passing an array will get the count for each relation:
$tracks = Track::withCount(['tutorials', 'users'])->get();
// total tracks
$tracks->count()
// access each relation count per track
$tracks->each(function (Track $track) {
echo $track->tutorial_count;
echo $track->user_count;
});
add a comment |
The withCount method allows you to count the number of results for model relationships.
Assuming you've defined a one to many relation between the User
and SolvedLesson
models:
// you can optionally alias the appended count attribute
$users = User::withCount('solvedLessons as solved_count')->get();
// total users
$users->count()
// iterate users to get the number of solved lessons for each
$users->each(function (User $user) {
// using the alias defined above
echo $user->solved_count;
});
You're not limited to a single relation either, passing an array will get the count for each relation:
$tracks = Track::withCount(['tutorials', 'users'])->get();
// total tracks
$tracks->count()
// access each relation count per track
$tracks->each(function (Track $track) {
echo $track->tutorial_count;
echo $track->user_count;
});
The withCount method allows you to count the number of results for model relationships.
Assuming you've defined a one to many relation between the User
and SolvedLesson
models:
// you can optionally alias the appended count attribute
$users = User::withCount('solvedLessons as solved_count')->get();
// total users
$users->count()
// iterate users to get the number of solved lessons for each
$users->each(function (User $user) {
// using the alias defined above
echo $user->solved_count;
});
You're not limited to a single relation either, passing an array will get the count for each relation:
$tracks = Track::withCount(['tutorials', 'users'])->get();
// total tracks
$tracks->count()
// access each relation count per track
$tracks->each(function (Track $track) {
echo $track->tutorial_count;
echo $track->user_count;
});
answered Jan 4 at 6:21
DigitalDrifterDigitalDrifter
8,8682825
8,8682825
add a comment |
add a comment |
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.
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%2f54033253%2fcount-multiple-models-in-laravel%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
Could you also provide the relationship between this models? I think a couple of counts can be avoided..
– HCK
Jan 4 at 4:53
1
what are you trying to achieve. its just the count of each model in dashboard
– Manojkiran.A
Jan 4 at 5:23