Sử dụng unaccent của Postgres trong laravel
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
Bạn thử cài nó vào trước xem có được không ?
CREATE EXTENSION IF NOT EXISTS unaccent;
DROP EXTENSION unaccent;
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 ạ
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àopgadmin
xem có chạy được ko ?
@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%';
@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?