我已經在很多購物網站上看到他們有側面的搜索過濾器,並且您可以添加任意數量的過濾器,並研究僅顯示匹配所有過濾器查詢。作爲一個例子,如果你去ebay並尋找一臺計算機,你可以過濾計算機的各種規格來縮小結果。php/mysql搜索表與未知數量的過濾器
我遇到的問題是如何爲具有許多字段以供用戶搜索的表執行此操作。
我有一個屬性表,我想通過任意數量的參數搜索例如租金,位置等。
我可以爲每個可能的選項創建搜索查詢,例如, searchByAddress($array)
,searchByAddressAndRent($array)
等,但這顯然不可行。
的另一種方式,我可以爲每個字段創建單獨的查詢,然後觸發對於每個參數即searchByRent($array)
,searchByAddress($array)
單獨搜索查詢,並允許PHP應用程序來計算哪些字段使用array_intersect
在所有得到的陣列是常見的。
但我想知道,必須有一個適當的技術來實現這一點。這個問題有點冗長,我從Google上找不到任何教程。
所以我的問題是,什麼是「正確」的方法/搜索數據庫表與各種搜索過濾器?
如果您花時間閱讀問題並進行了表決,請評論我應該如何改進問題。謝謝。 – Ozzy
我相信他們正在實施某種[EAV](http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model)。它也有其缺點。請參閱[如何構建大型表單應用程序?](http://stackoverflow.com/q/17745114)在本網站上閱讀關於它的一些信息。 –
@MadaraUchiha我無法理解EAV結構如何幫助搜索單個實體將其字段與可變數量的值進行匹配?是否因爲在EAV模型中有一個巨大的表,帶有'屬性'和'值'列,所以你只需要搜索'屬性'來匹配不同的值呢? – Ozzy