Как получить индекс элемента в коллекции Laravel

Как получить индекс элемента в коллекции? Мой код:

$users = User::has('posts')->withCount('posts')->orderBy('posts_count')->take(50)->get();

if ($users->contains(Auth::id())){
    //get the index of auth user id
 }

Спасибо за помощь

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
7
0
23 311
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Можно использовать коллекцию search() методом: https://laravel.com/docs/5.7/collections#method-search

$users = User::has('posts')->withCount('posts')->orderBy('posts_count')->take(50)->get();

$userIndex = $users->search(function($user) {
    return $user->id === Auth::id();
});

Просто будьте осторожны, потому что индекс может быть 0:

// DON'T do this
if ($userIndex) {
    // this will get skipped if the user is the first one in the collection
}

// Do this instead
if ($userIndex !== false) {
    // this will work
}
$users = User::has('posts')->withCount('posts')->orderBy('posts_count')->take(50)->get();

// this return a collection. So can do an if like this: $userIndex->count() > 0
$userIndex = $users->filter(function($user) {
    return $user->id === Auth::id()
});

Другие вопросы по теме