В списке объявлений нет связанных категорий, которые я посетил - PullRequest
0 голосов
/ 24 января 2020

В Laravel 6 я создаю список объявлений со связанной информацией об основном изображении и категориях, и проблема в том, что в результирующих данных я вижу поля main_image и> main_image_info и не вижу подрешетки категорий, как я ожидал:

$ads = Ad
    ::getByTitle($this->filter_title)
    ->getByStatus('A')
    ->leftJoin('users', 'users.id', '=', 'ads.creator_id')
    ->orderBy($this->order_by, $this->order_direction)
    ->select(
        'ads.*',
        'users.name as creator_username',
        'users.email as creator_email',
        'users.phone as creator_phone'
    )
    ->offset($limit_start)
    ->take($ads_per_page)
    ->distinct()
    ->paginate($ads_per_page)
    ->map(function ($adItem) {
        $adImage= AdImage
            ::getByAdId($adItem->id)
            ->getByMain(true)
            ->first();
        if ($adImage) {
            $adItem->main_image= $adImage->image;
            $adItem->main_image_info= $adImage->info;
        }

        \Log::info('!!! ::');
        $categories = AdCategory
            ::getByAdId($adItem->id)
            ->leftJoin('categories', 'categories.id', '=', 'ad_categories.category_id')
            ->orderBy('category_name', 'desc')

            ->select(
                'ad_categories.category_id as category_id',
                'categories.name as category_name'
            )
            ->get();
        $adItem->categories= $categories;
        \Log::info('$adItem->categories ::');
        \Log::info(json_encode($adItem->categories));  // I see these data in log file - but not in results array.

        return $adItem;
    })
    ->all();

Как правильно? Должен ли я добавить некоторые определения в модель объявления?

Спасибо!

...