Sort collecttion by date DESC using Laravel and Collection
I have a collection where I am ordering the "total" value in a descending way. When the "total" values are the same, I must order the items by descending date.
$collection->sortByDesc('total');
To sort the elements by descending date when the totals are equal, I have used sort
and sortByDesc
but the elements are still not sorted.
//First method
$collection->sortByDesc('created_at')->sortByDesc('total');
//Second method
$collection->->sort(function($a, $b){
if($a->total === $b->total)
{
return strtotime($a->created_at) - strtotime($b->created_at);
}
})->sortByDesc('total');
Neither option works for me and I still have the same result:
When the result should be the following (items ordered by descent date when the total values are equal):
What am I doing wrong? Cheerz.
PS: It does not help me to sort by "total" and then by "date" since the "total" value is the one that should be a priority.
arrays laravel sorting collections
add a comment |
I have a collection where I am ordering the "total" value in a descending way. When the "total" values are the same, I must order the items by descending date.
$collection->sortByDesc('total');
To sort the elements by descending date when the totals are equal, I have used sort
and sortByDesc
but the elements are still not sorted.
//First method
$collection->sortByDesc('created_at')->sortByDesc('total');
//Second method
$collection->->sort(function($a, $b){
if($a->total === $b->total)
{
return strtotime($a->created_at) - strtotime($b->created_at);
}
})->sortByDesc('total');
Neither option works for me and I still have the same result:
When the result should be the following (items ordered by descent date when the total values are equal):
What am I doing wrong? Cheerz.
PS: It does not help me to sort by "total" and then by "date" since the "total" value is the one that should be a priority.
arrays laravel sorting collections
1
Try this: github.com/laravel/ideas/issues/11#issuecomment-398873250
– Jonas Staudenmeir
Nov 24 '18 at 18:05
Is your date a string/integer or aCarbon
/DateTime
object?
– Namoshek
Nov 24 '18 at 18:23
@Namoshek is a Carbon instance
– Cristian Meza
Nov 24 '18 at 18:46
add a comment |
I have a collection where I am ordering the "total" value in a descending way. When the "total" values are the same, I must order the items by descending date.
$collection->sortByDesc('total');
To sort the elements by descending date when the totals are equal, I have used sort
and sortByDesc
but the elements are still not sorted.
//First method
$collection->sortByDesc('created_at')->sortByDesc('total');
//Second method
$collection->->sort(function($a, $b){
if($a->total === $b->total)
{
return strtotime($a->created_at) - strtotime($b->created_at);
}
})->sortByDesc('total');
Neither option works for me and I still have the same result:
When the result should be the following (items ordered by descent date when the total values are equal):
What am I doing wrong? Cheerz.
PS: It does not help me to sort by "total" and then by "date" since the "total" value is the one that should be a priority.
arrays laravel sorting collections
I have a collection where I am ordering the "total" value in a descending way. When the "total" values are the same, I must order the items by descending date.
$collection->sortByDesc('total');
To sort the elements by descending date when the totals are equal, I have used sort
and sortByDesc
but the elements are still not sorted.
//First method
$collection->sortByDesc('created_at')->sortByDesc('total');
//Second method
$collection->->sort(function($a, $b){
if($a->total === $b->total)
{
return strtotime($a->created_at) - strtotime($b->created_at);
}
})->sortByDesc('total');
Neither option works for me and I still have the same result:
When the result should be the following (items ordered by descent date when the total values are equal):
What am I doing wrong? Cheerz.
PS: It does not help me to sort by "total" and then by "date" since the "total" value is the one that should be a priority.
arrays laravel sorting collections
arrays laravel sorting collections
asked Nov 24 '18 at 17:38
Cristian MezaCristian Meza
14718
14718
1
Try this: github.com/laravel/ideas/issues/11#issuecomment-398873250
– Jonas Staudenmeir
Nov 24 '18 at 18:05
Is your date a string/integer or aCarbon
/DateTime
object?
– Namoshek
Nov 24 '18 at 18:23
@Namoshek is a Carbon instance
– Cristian Meza
Nov 24 '18 at 18:46
add a comment |
1
Try this: github.com/laravel/ideas/issues/11#issuecomment-398873250
– Jonas Staudenmeir
Nov 24 '18 at 18:05
Is your date a string/integer or aCarbon
/DateTime
object?
– Namoshek
Nov 24 '18 at 18:23
@Namoshek is a Carbon instance
– Cristian Meza
Nov 24 '18 at 18:46
1
1
Try this: github.com/laravel/ideas/issues/11#issuecomment-398873250
– Jonas Staudenmeir
Nov 24 '18 at 18:05
Try this: github.com/laravel/ideas/issues/11#issuecomment-398873250
– Jonas Staudenmeir
Nov 24 '18 at 18:05
Is your date a string/integer or a
Carbon
/DateTime
object?– Namoshek
Nov 24 '18 at 18:23
Is your date a string/integer or a
Carbon
/DateTime
object?– Namoshek
Nov 24 '18 at 18:23
@Namoshek is a Carbon instance
– Cristian Meza
Nov 24 '18 at 18:46
@Namoshek is a Carbon instance
– Cristian Meza
Nov 24 '18 at 18:46
add a comment |
1 Answer
1
active
oldest
votes
sortByDesc
will override the sorting you've done in your sort
function.
Also, strtotime($a->created_at) - strtotime($b->created_at)
will order the dates in ascending order not descending order.
The following should give you what you're after:
$collection->sort(function ($a, $b) {
if ($a->total === $b->total) {
return strtotime($a->created_at) < strtotime($b->created_at);
}
return $a->total < $b->total;
});
Lastly, assuming that created_at
and updated_at
are Carbon
instances you shouldn't need to use strtotime
:
$a->created_at < $b->created_at
Thanks for the help friend, now if it works with both order criteria. Greetings and thanks again.
– Cristian Meza
Nov 24 '18 at 18:45
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%2f53460775%2fsort-collecttion-by-date-desc-using-laravel-and-collection%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
sortByDesc
will override the sorting you've done in your sort
function.
Also, strtotime($a->created_at) - strtotime($b->created_at)
will order the dates in ascending order not descending order.
The following should give you what you're after:
$collection->sort(function ($a, $b) {
if ($a->total === $b->total) {
return strtotime($a->created_at) < strtotime($b->created_at);
}
return $a->total < $b->total;
});
Lastly, assuming that created_at
and updated_at
are Carbon
instances you shouldn't need to use strtotime
:
$a->created_at < $b->created_at
Thanks for the help friend, now if it works with both order criteria. Greetings and thanks again.
– Cristian Meza
Nov 24 '18 at 18:45
add a comment |
sortByDesc
will override the sorting you've done in your sort
function.
Also, strtotime($a->created_at) - strtotime($b->created_at)
will order the dates in ascending order not descending order.
The following should give you what you're after:
$collection->sort(function ($a, $b) {
if ($a->total === $b->total) {
return strtotime($a->created_at) < strtotime($b->created_at);
}
return $a->total < $b->total;
});
Lastly, assuming that created_at
and updated_at
are Carbon
instances you shouldn't need to use strtotime
:
$a->created_at < $b->created_at
Thanks for the help friend, now if it works with both order criteria. Greetings and thanks again.
– Cristian Meza
Nov 24 '18 at 18:45
add a comment |
sortByDesc
will override the sorting you've done in your sort
function.
Also, strtotime($a->created_at) - strtotime($b->created_at)
will order the dates in ascending order not descending order.
The following should give you what you're after:
$collection->sort(function ($a, $b) {
if ($a->total === $b->total) {
return strtotime($a->created_at) < strtotime($b->created_at);
}
return $a->total < $b->total;
});
Lastly, assuming that created_at
and updated_at
are Carbon
instances you shouldn't need to use strtotime
:
$a->created_at < $b->created_at
sortByDesc
will override the sorting you've done in your sort
function.
Also, strtotime($a->created_at) - strtotime($b->created_at)
will order the dates in ascending order not descending order.
The following should give you what you're after:
$collection->sort(function ($a, $b) {
if ($a->total === $b->total) {
return strtotime($a->created_at) < strtotime($b->created_at);
}
return $a->total < $b->total;
});
Lastly, assuming that created_at
and updated_at
are Carbon
instances you shouldn't need to use strtotime
:
$a->created_at < $b->created_at
answered Nov 24 '18 at 18:27
Ross WilsonRoss Wilson
16.6k22842
16.6k22842
Thanks for the help friend, now if it works with both order criteria. Greetings and thanks again.
– Cristian Meza
Nov 24 '18 at 18:45
add a comment |
Thanks for the help friend, now if it works with both order criteria. Greetings and thanks again.
– Cristian Meza
Nov 24 '18 at 18:45
Thanks for the help friend, now if it works with both order criteria. Greetings and thanks again.
– Cristian Meza
Nov 24 '18 at 18:45
Thanks for the help friend, now if it works with both order criteria. Greetings and thanks again.
– Cristian Meza
Nov 24 '18 at 18:45
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%2f53460775%2fsort-collecttion-by-date-desc-using-laravel-and-collection%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
1
Try this: github.com/laravel/ideas/issues/11#issuecomment-398873250
– Jonas Staudenmeir
Nov 24 '18 at 18:05
Is your date a string/integer or a
Carbon
/DateTime
object?– Namoshek
Nov 24 '18 at 18:23
@Namoshek is a Carbon instance
– Cristian Meza
Nov 24 '18 at 18:46