0
我使用phoenix-framework和postgresql。如何使用uuid搜索數據庫?
爲了實現搜索功能,我使用了ilike
ecto查詢和所有的搜索功能正常工作。例如,我有一個搜索產品名稱的功能,它的效果很好。
def item_searh_results(language_id, name) do
from(p in ItemLanguage, where: p.language_id == ^language_id
and ilike(p.name, ^("%#{name}%")),
select: %{id: p.item_id,
name: p.name}) |> Repo.all
end
我有一個模型,Sales
它使用uuid
其主鍵。
我試圖通過使用ilike
ecto查詢api像上面的函數搜索銷售。所以我做了類似的查詢。
from(p in Sales, where: ilike(p.id, ^("%#{id}%")))|> Repo.all
但是,它返回** (Postgrex.Error) ERROR 42883 (undefined_function): operator does not exist: uuid ~~* unknown
是否有可能使用ilike
查詢來搜索錯誤?如果是這樣,我在這裏做錯了什麼?
預先感謝您。
是的,這就是我要怎麼搜索。現在我明白爲了使用UUID進行搜索,我需要將其轉換爲「文本」。我只是試過你的解決方案,但它觸發了一個錯誤,「type(p.id(),:text)'不是一個有效的查詢表達式。是否有任何其他方式將其轉換爲文本? –
您能否給編輯過的版本一個試試看?我把'type'切換到'fragment'。很確定這應該工作。 – Dogbert