metropolitan-bronze•5h 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.metropolitan-bronzeOP•5h 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.