Laravel Как в Ad модели добавить ссвязанные ad_images строку с условием

mstdmstd

Новичок
Привет,
В Laravel 6 есть запрос с обьявлениями( ads ) со связанными списками жалоб( ad_report_abuses )
и категорий (ad_categories), вроде
PHP:
        $ads = Ad
            ::with('adReportAbuses.user')
            ->with('adCategories.category')
            ->getByTitle($this->filter_title)
            ->onlyNoneInfo()
            ->getByStatus('A')
            ->getUserByStatus('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);
        return (new AdCollection($ads));
И файл ресорса:
PHP:
class AdResource extends JsonResource
{
public static $wrap = 'ads';
public function toArray($request)
{
    return [
        'id' => $this->id,
        'title' => $this->title,
        'adCategories' => AdCategoryResource::collection($this->whenLoaded('adCategories')),
и
PHP:
class AdCategoryResource extends JsonResource
{
    public static $wrap = 'ad_categories';
    public function toArray($request)
    {
        return [
            'id' => $this->id,
            'ad_id' => $this->ad_id,
            'category_id' => $this->category_id,
            'category' => new CategoryResource($this->category),
это работает нормально.
Но мне также нужно добавить глвную картинку из связанных картинок (ad_images rows), вроде :
PHP:
              $adImage= AdImage

                    ::getByAdId($adItem->id)

                    ->getByMain(true)

                    ->first();

                if ($adImage) {

                    $adItem->main_image= $adImage->image;

                    $adItem->main_image_info= $adImage->info;

                } {

                  // if there are no rows found with ad_images.main == true, then get 1 row from ad_images by smalles id

                }
Я заню что добавление выше можно сделать используя mapping :
PHP:
           ->map(function ($adItem) {
               ...
            })
            ->all();
Но тогда я теряю “meta” имформацию, которая нужна лоя паджинации.

Полагаю что я должен сделать relation в Ad модели для ad_images rows с нужными условиями,
Это возможно? если да, то как?

Спасибо!
 
Сверху