Advertisement
Guest User

Untitled

a guest
Sep 6th, 2021
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 0.85 KB | None | 0 0
  1. <?php
  2. use Illuminate\Support\Arr;
  3.  
  4. public function index(Request $request): array
  5. {
  6.     $parameters = json_decode($request->get('lazyEvent'), true);
  7.    
  8.     $perPage = Arr::get($parameters, 'rows', 10)
  9.     $offset = Arr::get($parameters, 'page', 0) * $perPage;
  10.    
  11.     $query = DB::query()
  12.         ->select('companies.id', 'name', 'email', 'phone', DB::raw("COUNT('company_contact.id') AS contact_count"))
  13.         ->from('companies')
  14.         ->leftJoin('company_contact', 'company_contact.company_id', '=', 'companies.id')
  15.         ->when(Arr::has($parameters, 'filters.name'),
  16.                fn($q) => $q->where('name', 'like', '%'.Arr::get($parameters, 'filters.name.value').'%'))
  17.         ->groupBy('companies.id')
  18.         ->orderBy('name')
  19.         ->offset($offset)
  20.         ->limit($perPage);
  21.    
  22.     return ['companies' => $query->get(), 'totalRecords' => $query->count()];
  23. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement