Рекурсия PHP и фреймворк Laravel

252
23 декабря 2017, 06:47

Здравствуйте, имеется следующий код, но код отрабатывает только для третьего уровня вложенности, как заставить его работать до неограниченного кол-ва уровней вложенности?

public function users()
{
    return $this->hasMany(UserFollower::class, 'user_id', 'follower_id');
}
public function matrix($user, $follower)
{
    $followers = UserFollower::where('user_id', $follower->user->id)
        ->get();
    if($followers->count() < 2):
        $follower = new UserFollower([
            'user_id' => $follower->user->id,
            'follower_id' => $user->id
        ]);
        $follower->save();
        return 'success';
    else:
        foreach($followers as $follower):
            if($follower->users->count() == 2):
                continue;
            else:
                $follower = new UserFollower([
                    'user_id' => $follower->user->id,
                    'follower_id' => $user->id
                ]);
                $follower->save();
                return 'success';
            endif;
            $this->matrix($user, $follower);
        endforeach;
    endif;
}
public function store(Request $request)
{
    /* Регистрируем пользователя */
    $user = New User($request->all());
    $user->save();
    /* Матрица */
    $followers = UserFollower::where('user_id', Auth::user()->id)
        ->get();
    if($followers->count() < 2):
        $follower = new UserFollower([
            'user_id' => Auth::user()->id,
            'follower_id' => $user->id
        ]);
        $follower->save();
    else:
        foreach($followers as $follower):
            if($follower->users->count() == 2):
                continue;
            else:
                $follower = new UserFollower([
                    'user_id' => $follower->user->id,
                    'follower_id' => $user->id
                ]);
                $follower->save();
                break;
            endif;
            if($this->matrix($user, $follower) == 'success') break;
        endforeach;
    endif;
    /* Редирект */
    return Redirect::back()
        ->with('message', 'Статус выполнения: 200');
}
READ ALSO
Как проверить подключение к БД в MODx revo

Как проверить подключение к БД в MODx revo

Как проверить подключение к удаленной БД на MODx revo, если подключаюсь через redbeanphp (ORM)

245
Проверить 100к url взятых из txt файла на 404 php

Проверить 100к url взятых из txt файла на 404 php

Есть большое количество urlНеобходимо проверить, какие ещё существуют, а какие нет

214
Где найти файл tempale.php в Bitrix

Где найти файл tempale.php в Bitrix

Приветствую! Подскажите, новичку в Bitrix, где найти файл tempalephp? Я с этой CMS раньше не работала

321
Swiftmailer.Uncaught Error: Call to undefined method Swift_SmtpTransport::newInstance()

Swiftmailer.Uncaught Error: Call to undefined method Swift_SmtpTransport::newInstance()

Всем приветПомогите пожалуйста разобраться с ошибкой, которую я получаю

242