Как искать из двух столбцов таблицы базы данных, используя компонент vuetify, такой как v-autocomplete или v-combobox - PullRequest
0 голосов
/ 10 июля 2019

Я использую vuetify для проекта.но у меня проблема с опцией поиска, такой как автозаполнение или выпадающий список.Мне нужно создать функцию поиска, где я могу искать из таблицы базы данных, используя «Имя» из столбца имени или «контакт / номер телефона» из столбца контактов.Но у меня возникает проблема, что я могу искать, используя имя любого контакта.Когда я помещаю: item-text = "Name", он выполняет поиск по столбцу имен.

<v-combobox
          v-model="searchPatients.searchInput"
          :items="searchFilter"
          :search-input.sync="searchPatient"
          item-text="name"
          item-value="name"
          item-disabled
          hint="Search by Contact Number"
          label="Search Old Patient"
          prepend-inner-icon="search"
          outline
          open-on-clear
        >
          <template v-slot:item="data">
            <v-list-tile-content >
              <v-list-tile-title v-html="data.item.name"></v-list-tile-title>
              <v-list-tile-sub-title v-html="'Contact: ' +data.item.contact +', Age: '+ data.item.age"></v-list-tile-sub-title>
            </v-list-tile-content>
           <v-btn small fab dark color="cyan darken-2" slot="activator" @click="addOldPatientSchedule(data.item)">
                <v-icon>add</v-icon>
            </v-btn>
          </template>
        </v-combobox>

Но когда я помещаю: item-text = "contact", он выполняет поиск по столбцу контактов.

<v-combobox
          v-model="searchPatients.searchInput"
          :items="searchFilter"
          :search-input.sync="searchPatient"
          item-text="contact"
          item-value="name"
          item-disabled
          hint="Search by Contact Number"
          label="Search Old Patient"
          prepend-inner-icon="search"
          outline
          open-on-clear
        >
          <template v-slot:item="data">
            <v-list-tile-content >
              <v-list-tile-title v-html="data.item.name"></v-list-tile-title>
              <v-list-tile-sub-title v-html="'Contact: ' +data.item.contact +', Age: '+ data.item.age"></v-list-tile-sub-title>
            </v-list-tile-content>
           <v-btn small fab dark color="cyan darken-2" slot="activator" @click="addOldPatientSchedule(data.item)">
                <v-icon>add</v-icon>
            </v-btn>
          </template>
        </v-combobox>

моя логика поиска приведена ниже

searchFilter(){
    return this.patientInfo.filter((getPatient) => {
      return (getPatient.name.toLowerCase().match(this.searchPatient) || getPatient.contact.match(this.searchPatient))
    });
  }

Запрос к базе данных

  $filteredPatients = Patient::where('name','like',"%$patients%")
    ->orWhere('contact','like',"%$patients%")
    ->take(10)->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...