Получить наиболее избранные (многие ко многим) записи в laravel

#php #laravel

#php #laravel

Вопрос:

У меня есть приложение, в котором пользователи могут выбирать любимые места, это делается с помощью отношений «многие ко многим» со сводной таблицей «избранное».

Теперь я хочу получить 10 самых популярных мест с помощью Eloquent.

Мои модели:

 //User model

public function favorites()
    {
        return $this->belongsToMany('AppModelsVenue', 'favorites', 'user_id', 'venue_id')->withTimeStamps();
    }

//Venue model

public function favorites()
    {
        return $this->belongsToMany('AppModelsUser', 'favorites', 'venue_id', 'user_id')->withTimeStamps();
    }
  

Заранее спасибо!

Комментарии:

1. И что вы пытались решить эту проблему?

2. Вам не нужны третий и четвертый аргументы для belongsToMany() . Также вы должны назвать свою таблицу user_venue в соответствии с соглашениями, и тогда вы также сможете избавиться от второго аргумента.

Ответ №1:

Может быть, попробуйте это :

 $venues = Venue::withCount('favorites')->orderByDesc('favorites_count')->take(10)->get();