rising-crimson•2mo ago
Refine + Strapi relation
how to add direct ID relation
6 Replies
Hi @tingadev. I'm kapa.ai, your friendly support bot. I will try to answer your question by searching through the knowledge base. :wave:
----------------------
To add a direct ID relation between resources in Refine when using Strapi as your backend, you typically define the relation in your Strapi collections (using the Content-Type Builder in the Strapi admin UI). For example, if you have a
posts collection and a categories collection, you can add a relation field (e.g., "category") to the posts collection that references a category by its ID.
When fetching data in Refine, Strapi by default only returns the related resource's ID. To access the full related object (not just the ID), you need to use the populate parameter in the meta property of your data fetching hooks (like useTable, useList, etc.). This tells Strapi to include the full related object in the response.
Example:
This way, each post will include the full category object, not just its ID. If you only want the ID, you can omit the populate parameter and access the relation field directly (e.g., row.category will be the ID).
Displaying the related field:
If you want to filter or set a relation by ID when creating or editing, you can simply set the relation field to the related resource's ID in your form data.
Summary:
- Define the relation in Strapi (e.g., a "category" field in "posts" that links to "categories").
- In Refine, use the relation field directly for the ID, or use populate in meta to get the full object.
- When creating or updating, set the relation field to the related resource's ID.rising-crimsonOP•2mo ago
const orderItemData = {
quantity: item.quantity,
unitPrice: item.price,
totalPrice: item.price * item.quantity,
productName: item.name,
productSku: item.sku ||
SKU-${item.productId},
variantName: item.variantName,
order: createdOrder.id, // Direct relation ID for creation
product: item.productId, // Direct product ID
...(item.variantId && {
productVariant: item.variantId // Direct variant ID if exists
}),
};
example data payload @kapa.aiLet me check the knowledge base for you again. One moment! :books:
For more details and code examples, see the official documentation and blog posts:
- Strapi v4 Relations Population
- Handling relational data in Refine + Strapi
----------------------
Note: you can ask me a follow up question by @ mentioning me again :speech_balloon:
----------------------
<@761921731505946634> Kapa.ai is still learning and improving, please let me know how I did by reacting below.
----------------------
Based on the knowledge sources, when creating a record with direct ID relations in Refine + Strapi, you can send the related resource's ID directly in the payload. This is supported by Strapi v4 and the Refine data provider for Strapi. For example, if you have an
- Use the related resource's ID directly in the payload for relation fields. - This is fully supported by Refine's Strapi v4 data provider. - Use
orderItem that relates to an order, product, and optionally a productVariant, your payload can look like this:
This structure is valid for Strapi v4, as you can assign the related entity's ID directly to the relation field in your payload. When using Refine's data hooks (like useCreate), you can pass this object as the values parameter.
Example usage with Refine's useCreate:
This approach is confirmed in the documentation and blog posts, which state that for direct ID relations, you simply set the relation field to the related resource's ID in your form or payload. If you want to fetch the full related object later, use the populate parameter in your queriesHandling relational data in Refine + Strapi Strapi v4 Relations Population.
Summary:- Use the related resource's ID directly in the payload for relation fields. - This is fully supported by Refine's Strapi v4 data provider. - Use
populate in meta when fetching if you need the full related object instead of just the ID.
----------------------
Note: you can ask me a follow up question by @ mentioning me again :speech_balloon:
----------------------<@761921731505946634> Kapa.ai is still learning and improving, please let me know how I did by reacting below.