3 namespace BookStack\Entities\Queries;
5 use BookStack\Activity\Models\Favourite;
6 use Illuminate\Database\Query\JoinClause;
8 class TopFavourites extends EntityQuery
10 public function run(int $count, int $skip = 0)
13 if ($user->isGuest()) {
17 $query = $this->permissionService()
18 ->restrictEntityRelationQuery(Favourite::query(), 'favourites', 'favouritable_id', 'favouritable_type')
19 ->select('favourites.*')
20 ->leftJoin('views', function (JoinClause $join) {
21 $join->on('favourites.favouritable_id', '=', 'views.viewable_id');
22 $join->on('favourites.favouritable_type', '=', 'views.viewable_type');
23 $join->where('views.user_id', '=', user()->id);
25 ->orderBy('views.views', 'desc')
26 ->where('favourites.user_id', '=', user()->id);
33 $this->mixedEntityListLoader()->loadIntoRelations($favourites->all(), 'favouritable', false);
35 return $favourites->pluck('favouritable')->filter();