Esempio n. 1
0
 /**
  * Search records
  * 
  * @param  Request $request
  */
 public function search(Request $request)
 {
     // input search fields
     $tagfield = $request->get('tagfield');
     $tagsubfield = $request->get('tagsubfield');
     $query = $request->get('expressao');
     $arquivo = $request->get('arquivo');
     // get the records
     $records = Record::whereHas('fields', function ($q) use($query, $tagfield, $tagsubfield) {
         $q->join('marcsubfields', 'records_fields.tagsubfield', '=', 'marcsubfields.id')->join('marcfields', 'marcsubfields.tagfield', '=', 'marcfields.id')->where('records_fields.value', '!=', '')->where('records_fields.value', 'LIKE', '%' . $query . '%');
         if ($tagsubfield != '*') {
             $q->where('marcfields.tagfield', $tagfield)->where('marcsubfields.tagsubfield', $tagsubfield);
         }
     })->with(['fields' => function ($q) {
         $q->join('marcsubfields', 'records_fields.tagsubfield', '=', 'marcsubfields.id')->join('marcfields', 'records_fields.tagfield', '=', 'marcfields.id')->orderby('marcfields.id')->select('records_fields.value', 'marcsubfields.description', 'records_fields.record_id', 'records_fields.id', 'marcfields.tagfield', 'marcsubfields.tagsubfield');
     }])->join('biblios', 'records.biblio', '=', 'biblios.id')->select('records.*', 'biblios.name');
     if ($arquivo != '*') {
         $records = $records->where('biblio', '=', $arquivo);
     }
     $records = $records->get();
     $total_num_records = count($records);
     $paginatedSearchResults = $this->paginateResults($records, Config::get('settings.search_items_per_page'), $request);
     $biblios = Biblio::All();
     return view('results', compact('paginatedSearchResults', 'total_num_records', 'tagfield', 'tagsubfield', 'query', 'biblios', 'arquivo'));
 }