Yêu cầu thg 5 28, 2021 9:59 SA 471 0 2
  • 471 0 2
0

Sử dụng unaccent của Postgres trong laravel

Chia sẻ
  • 471 0 2

Hiện tại e đang muốn sử dụng extension unaccent của Postgres trong laravel. nhưng khi e cài extension trên pgadmin và chạy query trên pgadmin thì lệnh thực hiện thành công, còn chạy ở laravel thì báo lỗi

function unaccent(character varying) does not exist

không biết anh chị nào làm với Postgres và laravel gặp lỗi này rồi có thể giúp em được không ạ ?

2 CÂU TRẢ LỜI


Đã trả lời thg 7 13, 2021 8:27 SA
+1

@duongdosieu224 có thể lquan đến quyền truy cập vào function. Bạn chạy trên pgadmin và laravel có cùng user không?

Chia sẻ
Đã trả lời thg 5 30, 2021 9:59 SA
0

Bạn thử cài nó vào trước xem có được không ?

CREATE EXTENSION IF NOT EXISTS unaccent;
DROP EXTENSION unaccent;
Chia sẻ
Avatar Dương Siêu @duongdosieu224
thg 5 31, 2021 1:24 SA

Mình cài ở pgadmin chạy oke rồi, nhưng gọi ở laravel vẫn k được ạ, ý anh là cài ở laravel hay sao ạ

Avatar Bamboo @HoanKi
thg 5 31, 2021 1:33 SA

Sorry bạn mình đọc câu hỏi chưa kĩ, câu lệnh này chỉ cài ở postgresql thôi chứ.

  • Laravel hay framework gì thì cũng sẽ chỉ build ra câu query, rồi thực thi câu query đó trong cơ sở dữ liệu mà bạn.

  • Có thể là code ở Laravel của bạn chưa đúng với ý đồ, dẫn tới câu query build ra bị sai hoặc config đang trỏ từ Laravel tới db khác.

  • Bạn thử in câu query từ Laravel ra, copy vào pgadmin xem có chạy được ko ?

Avatar Dương Siêu @duongdosieu224
thg 5 31, 2021 3:28 SA

@HoanKi mình in câu query từ laravel copy vào pgadmin chạy được á bạn, mà chạy ở laravel thì lỗi -.- đây là lỗi khi chạy ở laravel

{
    "status": 500,
    "title": "An error occurred.",
    "errors": [
        {
            "title": "Internal Server Error",
            "detail": "SQLSTATE[42883]: Undefined function: 7 ERROR:  function unaccent(text) does not exist\nLINE 1: ...lect count(*) as aggregate from \"Employees\" where unaccent(U...\n  ^\nHINT:  No function matches the given name and argument types. You might need to add explicit type casts. (SQL: select count(*) as aggregate from \"Employees\" where unaccent(UPPER(\"FullName\")) LIKE '%PHU%')"
        }
    ]
}

đây là câu query mình copy và chạy ở pgadmin select * from "Employees" where unaccent(UPPER("FullName")) LIKE '%PHU%';

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí