Laravel запрашивает много ко многим - PullRequest
1 голос
/ 21 ноября 2019

У меня 2 модели, Сервис и Категория . Они связаны с отношением «многие ко многим» следующим образом:

Service.php

public function categories()
{
   return $this->belongsToMany('App\Category')->withTimestamps();
}
Category.php

public function services()
{
   return $this->belongsToMany('App\Service')->withTimestamps();
}

И, конечно, они объединены сводной таблицей:

category_service

  - category_id
  - service_id
  - created_at
  - updated_at

Я бынравится использовать локальную область видимости для фильтрации результатов обслуживания на основе идентификаторов категорий. Я сделал следующее:

Service.php

public function scopeFilter($query, $category_ids)
{
    $services = Service::whereHas('categories', function (Builder $query) use ($category_ids) {
        $query->whereIn('category_id', $category_ids)->get();
    });

    return $services;
}

Но я получаю ошибку Column not found, а именно:

Column not found: 1054 Unknown column 'services.id' in 'where clause' (SQL: select * from `categories` inner join `category_service` on `categories`.`id` = `category_service`.`category_id` where `services`.`id` = `category_service`.`service_id` and `category_id` in (1, 2))

1 и 2 - категорияИдентификаторы, которые я передаю.

Я написал функцию, основываясь на найденном ответе здесь и здесь .

Есть указатели?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...