• MVC | Где получать имя категории, пользователей?

    rpsv
    @rpsv
    делай либо хорошо, либо никак
    Для начала если хотите использовать ООП перестаньте использовать ассоциативные массивы.
    У вас данные из базы забирает маппер/ar/запрос соответственно он и должен заботиться об остальных данных.
    Пример (псевдокод):
    Вариант 1

    $postList = Post::getPostList([
        'join' => [
            'category',
            'author',
        ],
    ]);
    foreach($postList as $post) {
        // то есть маппер у вас уже эти данные получил и перед отдачей объектов инициализировал их
        $post->getCategoryName();
        $post->getAuthorName();
    }
    $view->render($postList);

    Или так:
    Вариант 2

    $postList = Post::getPostList();
    
    $postIds = array_column($postList, 'id');
    $categoryNames = Category::getNamesWherePostId($postIds);
    $authorNames = User::getNamesWherePostId($postIds);
    
    foreach($postList as $post) {
        $post['category_name'] = $categoryNames[$post->categoryId] ?? null;
        $post['author_name'] = $authorNames[$post->authorId] ?? null;
    }
    $view->render($postList);
    Ответ написан
    Комментировать