WhyPik DocsVề trang chính

Lập trình viên / Tra cứu

Quan hệ: include và lọc qua bảng liên kết

Join theo foreign key đã khai báo. Không nhận raw JOIN SQL hoặc nối bảng tùy ý.

Khai báo tên quan hệ

Trong schema, cột players.server_id references servers.id với alias:"server", reverse_alias:"players". Alias là tên dùng trong SDK, không phải tên bảng tự đoán. Tải lại TypeScript types sau khi thay schema.

json
{"name":"server_id","type":"bigint","references":{
  "table":"servers","column":"id","alias":"server",
  "reverse_alias":"players","on_delete":"restrict"
}}

Forward và reverse

Forward trả object hoặc null nếu không có/không được thấy dòng liên kết. Reverse trả array; nếu FK có ràng buộc một cột PRIMARY/UNIQUE thì là to-one. Unique index riêng không tự đổi shape array.

typescript
const players = await client.from("players")
  .include({server:{columns:["id","name"]}}).select("id", "nickname");
const servers = await client.from("servers")
  .include({players:{columns:["id","nickname"],limit:10}}).select("id", "name");

Lọc liên kết

server__id trong filter đi theo alias. Điều kiện quan hệ có thể loại dòng gốc khi không có dòng liên kết khớp/quyền đọc. Cần quyền đọc cột nối trên cả hai bảng; include không bỏ qua RLS.

typescript
await client.from("players").filter({server__id:"1"}).select();

Giới hạn

Độ sâu tối đa 2, reverse to-many mặc định 20 con, tối đa 100 con mỗi relation. Tổng expanded rows tối đa kỹ thuật 2000 và response 5 MiB; giảm limit gốc/con khi vượt. Include chỉ dùng với reads. Không có aggregate, arbitrary join, cross-project join hoặc realtime subscription ở bản này.

Trong bài này