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

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

Chia sẻ
  • 292 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 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%';

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

@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ẻ
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í