Exemple #1
0
 /**
  * Query builder scope to search on text for complex Bootstrap Tables API
  *
  * @param  Illuminate\Database\Query\Builder  $query  Query builder instance
  * @param  text                              $search      Search term
  *
  * @return Illuminate\Database\Query\Builder          Modified query builder
  */
 public function scopeTextSearch($query, $search)
 {
     $search = explode(' OR ', $search);
     return $query->where(function ($query) use($search) {
         foreach ($search as $search) {
             $query->whereHas('model', function ($query) use($search) {
                 $query->whereHas('category', function ($query) use($search) {
                     $query->where(function ($query) use($search) {
                         $query->where('categories.name', 'LIKE', '%' . $search . '%')->orWhere('models.name', 'LIKE', '%' . $search . '%')->orWhere('models.modelno', 'LIKE', '%' . $search . '%');
                     });
                 });
             })->orWhereHas('model', function ($query) use($search) {
                 $query->whereHas('manufacturer', function ($query) use($search) {
                     $query->where(function ($query) use($search) {
                         $query->where('manufacturers.name', 'LIKE', '%' . $search . '%');
                     });
                 });
             })->orWhere(function ($query) use($search) {
                 $query->whereHas('assetstatus', function ($query) use($search) {
                     $query->where('status_labels.name', 'LIKE', '%' . $search . '%');
                 });
             })->orWhere(function ($query) use($search) {
                 $query->whereHas('company', function ($query) use($search) {
                     $query->where('companies.name', 'LIKE', '%' . $search . '%');
                 });
             })->orWhere(function ($query) use($search) {
                 $query->whereHas('defaultLoc', function ($query) use($search) {
                     $query->where('locations.name', 'LIKE', '%' . $search . '%');
                 });
             })->orWhere(function ($query) use($search) {
                 $query->whereHas('assigneduser', function ($query) use($search) {
                     $query->where(function ($query) use($search) {
                         $query->where('users.first_name', 'LIKE', '%' . $search . '%')->orWhere('users.last_name', 'LIKE', '%' . $search . '%')->orWhere(function ($query) use($search) {
                             $query->whereHas('userloc', function ($query) use($search) {
                                 $query->where('locations.name', 'LIKE', '%' . $search . '%');
                             });
                         });
                     });
                 });
             })->orWhere('assets.name', 'LIKE', '%' . $search . '%')->orWhere('assets.asset_tag', 'LIKE', '%' . $search . '%')->orWhere('assets.serial', 'LIKE', '%' . $search . '%')->orWhere('assets.order_number', 'LIKE', '%' . $search . '%')->orWhere('assets.notes', 'LIKE', '%' . $search . '%');
         }
         foreach (CustomField::all() as $field) {
             $query->orWhere($field->db_column_name(), 'LIKE', "%{$search}%");
         }
     });
 }