В 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();
Как правильно? Должен ли я добавить некоторые определения в модель объявления?
Спасибо!