我有一個表,它有一個全域搜索欄,需要觸發對所有欄位的搜索,如名字、姓氏、電子郵件和角色。
還有一個動態過濾器,它可以有一個或多個過濾器,如“firstName”或/和“lastName”
顯然他們需要分頁。
對于分頁,我可以使用 Model.query().page(1, 10)
但是如何提供搜索或過濾。假設在給定時間僅搜索或過濾活動。
使用 LIKE 搜索和過濾兩者。如何動態地做到這一點。
uj5u.com熱心網友回復:
異議允許您修改查詢:
let filtersArr = [.. build your filters]
await YourModel
.query()
.modify((queryBuilder) => {
if (hasFilters) {
filtersArr.forEach(({criteria, value}) => {
queryBuilder.where(criteria, value)
})
}
if (hasQ) {
queryBuilder.where('name', 'ilike', `%${q}%`)
}
})
.page(page, paginate)
這可以擴展到包括關系或排序,并且它不必一次排他,您可以在同一查詢中過濾、排序和搜索所有內容
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/413610.html
標籤:
上一篇:如何為特定的CREATETABLE[Table]AS設定表空間
下一篇:檢查SQL中的可互換列值
