@Designik_by
SEO, Интернет-маркетинг

Как передать параметр в метод класса laravel?

Есть такая штука
$articles = Category::where('id', $category_id)->with('articles')->get();

Т.е. получаем все статьи определенной категории.
class Category extends Model
{  
  public function articles($city)
  {
    return $this->hasMany(Article::class);
  }
}

Но также нужно фильтровать данные статьи не только по категории, но и по городу (другая таблица Cities). Таблица Article содержит в себе city_id. То есть если добавить в метод articles одну штуку, то фильтруется все как надо:
return $this->hasMany(Article::class)->where('city_id', 1);

Теперь вопрос. Как вместо этой единицы (которую я подставил) передать переменную с city_id? ну или как это все нужно правильно переделать?
  • Вопрос задан
  • 547 просмотров
Решения вопроса 1
Kodenkos
@Kodenkos
Фрилансер
Если правильно помню, то так
$articles = Category::where('id', $category_id)
	->whereHas(
        'articles', function ($query) {
            $query->where('city_id', '=', $cityId);
        }
    )
	->with('articles')
	->get();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Konstantin18ko
@Konstantin18ko
Стоматолог
Это надо делать на уровне контроллера.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы