Как устранить эффект прописных и строчных букв в фильтре базы данных - vue - laravel - PullRequest
1 голос
/ 24 мая 2019

Я написал функцию фильтра, которая фильтрует по столбцам. Я заметил, что когда слово пишется в верхнем регистре, оно не даст результата, если слово будет в нижнем регистре.

Например: Я ищу термин Paper, я получаю все строки, содержащие слово Paper, но не получаю строки, содержащие paper.

Я мог бы сказать, что когда я вставляю слово в фильтр, автоматически делаю его строчным, но затем я хочу получить строки, содержащие Paper. Как я могу решить это?

Как я могу игнорировать строчные и прописные буквы в моем фильтре? Спасибо за помощь.

Часть HTML

<b-table class="col-sm-12 table-sm" show-empty striped hover stacked="md" tbody-tr-class="addPointer"
    :items="filter"
    :fields="fields"
    @filter="onFilter">

    <template slot="top-row" >
        <td v-for="field in Object.keys(fields)" :key="field.key">
            <input class="col-sm" v-if="Object.keys(filters).indexOf(field) !== -1" v-model="filters[field]" :placeholder="field">
        </td>
    </template>
    <template slot="name" slot-scope="row">
        {{row.item.name}}
    </template>
</b-table>

Функция

data() {
   return {

        filters: {
                name:'',
        },
       }
     },
     computed:{ 
        filter () {
            const filter = this.datas.filter(value => {
                    String(value[key]).includes(this.filters[key]))
            })
            return filter.length > 0 ? filter : [
                {
                    name:'',
                }
            ]
        },

1 Ответ

2 голосов
/ 24 мая 2019

Попробуйте вызвать toLowerCase() для результатов из базы данных и вашего ввода.

В вашем случае:

const filter = this.datas.filter(value => {
                    String(value[key].toLowerCase()).includes(this.filters[key].toLowerCase()))
            })
...