PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Học thuyết JSON cột trong postgresql đang lưu trữ các đối tượng hoặc mảng của cùng một dữ liệu

Mad ủng hộ @Dave Redfern trên Slack, người đã chỉ ra vấn đề của tôi. Khi truyền một mảng được lập chỉ mục khác 0, nó sẽ được xen vào dưới dạng một đối tượng.

dump(json_encode([
    0 => "ROLE_SITE_DIRECTOR", 2 => "ROLE_TRANSLATOR", 1 => "ROLE_DATA_ENTRY",
]));
dump(json_encode(array_values([
    0 => "ROLE_SITE_DIRECTOR", 2 => "ROLE_TRANSLATOR", 1 => "ROLE_DATA_ENTRY",
])));

đầu ra sẽ là:

"{"0":"ROLE_SITE_DIRECTOR","2":"ROLE_TRANSLATOR","1":"ROLE_DATA_ENTRY"}"
"["ROLE_SITE_DIRECTOR","ROLE_TRANSLATOR","ROLE_DATA_ENTRY"]"

Vì vậy, cách khắc phục rất đơn giản, tôi là người thiết lập của tôi:

$this->roles = array_values($roles);

Về sau, nó cũng là một thực tiễn tốt hơn để sử dụng các mối quan hệ cơ sở dữ liệu cho các vai trò. Tìm kiếm theo dữ liệu JSON không phải là thú vị, nhưng trong một kết hợp là một phương pháp tiêu chuẩn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres HStore Lỗi - Nhà điều hành không xác định

  2. Bảng có tọa độ của lưới lục giác bao phủ thế giới

  3. Lấy dữ liệu từ php vào tập lệnh c #

  4. Biểu diễn dữ liệu thưa thớt trong PostgreSQL

  5. Truy vấn ứng dụng khách Vertx JDBCWithParams - làm cách nào để thêm danh sách?