Запрос для получения информации о персонале (сводная таблица) - PullRequest
0 голосов
/ 10 июля 2019

У меня есть эти модели:

STAFF
-----
id
name


PAGE_STAFF
----------
page_id
staff_id


PAGE
----
id
title
parent_id



PARENT_PAGE
-----------
id
title

И методы отношений, подобные этому:

     in Staff Model
     /**
     * The areas that belongs to the staff member.
     *
     * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
     */
    public function pages()
    {
       return $this->belongsToMany(Page::class);
    }


   in Page Model
   /**
   * The staff that belongs to the page.
   *
   * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
   */

   public function staff()
   {
    return $this->belongsToMany(Staff::class);
   }

PARENT_PAGE содержит идентификатор (и заголовок) "главной страницы".Эта модель не связана с какой-либо моделью, и я использую ее для появления фильтра.Я имею в виду, что мне нужен только page_id из page_staff, который parent_page.id == page_staff.page_id.

Но мне нужно знать записи в сводной таблице "page_staff".Требуется запрос

всех сотрудников (page_staff.staff_id), которые содержатся в модели "page_staff", и page_staff.page_id == parent_page.id.

После этого мне нужны все модели сотрудников (staff.id)

Как я могу сделать это в Eloquent?

С уважением

1 Ответ

1 голос
/ 10 июля 2019

Немного запутался, как ParentPage связан во всем этом. Чтобы получить весь персонал в сводной таблице, мы можем сделать это с помощью has(). Обновлю вопрос, когда узнаю, где находится родительская страница в этом домене.

$staffWithPages = Staff::whereHas('pages.parent', function ($query) {
    $query->where('laravel_reserved_0.id', '!=', 'page_staff.page_id');
})->get();

Если вы хотите, чтобы идентификаторы использовали метод Laravel Collection pluck.

$staffWithPages->plukc('id')->all();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...