123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- <?php
- namespace Maatwebsite\Excel\Tests\Data\Stubs;
- use Illuminate\Contracts\Queue\ShouldQueue;
- use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
- use Illuminate\Database\Eloquent\Relations\Relation;
- use Illuminate\Database\Query\Builder;
- use Illuminate\Support\Facades\DB;
- use Maatwebsite\Excel\Concerns\Exportable;
- use Maatwebsite\Excel\Concerns\FromQuery;
- use Maatwebsite\Excel\Concerns\WithCustomQuerySize;
- use Maatwebsite\Excel\Concerns\WithMapping;
- use Maatwebsite\Excel\Tests\Data\Stubs\Database\Group;
- class FromQueryWithCustomQuerySize implements FromQuery, WithCustomQuerySize, WithMapping, ShouldQueue
- {
- use Exportable;
- /**
- * @return Builder|EloquentBuilder|Relation
- */
- public function query()
- {
- $query = Group::with('users')
- ->join('group_user', 'groups.id', '=', 'group_user.group_id')
- ->select('groups.*', DB::raw('count(group_user.user_id) as number_of_users'))
- ->groupBy('groups.id')
- ->orderBy('number_of_users');
- return $query;
- }
- /**
- * @return int
- */
- public function querySize(): int
- {
- return Group::has('users')->count();
- }
- /**
- * @param Group $row
- * @return array
- */
- public function map($row): array
- {
- return [
- $row->id,
- $row->name,
- $row->number_of_users,
- ];
- }
- }
|