Skip to main content

Black Friday 2025! Only until December 1st: coupon FRIDAY25 for 40% off Yearly/Lifetime membership!

Read more here

monicahq/monica

23656 stars
3 code files
View monicahq/monica on GitHub

app/Helpers/CollectionHelper.php

Open in GitHub
use Illuminate\Support\Collection;
 
class CollectionHelper
{
public static function sortByCollator($collect, $callback, $options = \Collator::SORT_STRING, $descending = false)
{
$results = [];
 
$callback = static::valueRetriever($callback);
 
foreach ($collect->all() as $key => $value) {
$results[$key] = $callback($value, $key);
}
 
static::getCollator()->asort($results, $options);
if ($descending) {
$results = array_reverse($results);
}
 
foreach (array_keys($results) as $key) {
$results[$key] = $collect->get($key);
}
 
return new Collection($results);
}
//
}

app/Providers/MacroServiceProvider.php

Open in GitHub
use App\Helpers\CollectionHelper;
use Illuminate\Support\Collection;
use Illuminate\Support\ServiceProvider;
 
class MacroServiceProvider extends ServiceProvider
{
public function boot()
{
if (! Collection::hasMacro('sortByCollator')) {
Collection::macro('sortByCollator', function ($callback, $options = \Collator::SORT_STRING, $descending = false) {
$collect = $this;
 
return CollectionHelper::sortByCollator($collect, $callback, $options, $descending);
});
}
//
}
}

app/Http/Controllers/Settings/GendersController.php

Open in GitHub
class GendersController extends Controller
{
public function index()
{
$gendersData = collect([]);
$genders = auth()->user()->account->genders;
 
foreach ($genders as $gender) {
$gendersData->push($this->formatData($gender));
}
 
return CollectionHelper::sortByCollator($gendersData, 'name');
}
//
}

We'd Love Your Feedback

Tell us what you like or what we can improve

Feel free to share anything you like or dislike about this page or the platform in general.