#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();