🔛Связь двух ресурсов

В Mokky можно сделать связь One-to-One между двумя ресурсами. Это бывает полезно, когда мы хотим, например, вместе со списком новостей выводить и самих авторов, которые хранятся в другом ресурсе.

Представим, что у нас есть два ресурса:

/users
[
  {
    "id": 1,
    "name": "Вася Пупкин"
  },
  {
    "id": 2,
    "name": "Акакий Арачимарович"
  }
]
/orders
[
  {
    "id": 1,
    "name": "Хлеб",
    "user_id": 1,
  },
  {
    "id": 2,
    "name": "Вода",
    "user_id": 1,
  },
  {
    "id": 3,
    "name": "Котлеты с пюрешкой",
    "user_id": 2,
  }
]

И мы хотим сделать так, что при получении всех заказов (orders), возвращались вместе с заказами сами пользователи (вместо user_id).

Для этого, в самом запросе добавляем параметр _relations в который можем через запятую передать все связи.

Если в вашем объекте есть несколько связей, то в _relations достаточно их перечислить так: _relations=users,posts,items

В нашем случае достаточно указать так:


https://XXX.mokky.dev/orders?_relations=users

И в итоге нам вернётся следующий ответ:

Ответ от сервера
[
  {
    "id": 1,
    "name": "Хлеб",
    "user": {
      "id": 1,
      "name": "Вася Пупкин"
    },
  },
  {
    "id": 2,
    "name": "Вода",
    "user": {
      "id": 1,
      "name": "Вася Пупкин"
    },
  },
  {
    "id": 3,
    "name": "Котлеты с пюрешкой",
    "user": {
      "id": 2,
      "name": "Акакий Арачимарович"
    }
  }
]

Если у нас есть ресурс /posts, то свойство должно называться post_id

Если /patients то свойство в объектах patient_id

Правила именования полей для связи

✅ Правильно: user_id, post_id, order_id, notification_id и т.п.
{
  "id": 151,
  "name": "Заголовок новости",
  "user_id": 1,
}

{
  "id": 1,
  "name": "Новость удалена модератором",
  "post_id": 151,
}

{
  "id": 1,
  "name": "Заказ #177 оформлен успешно!",
  "order_id": 177,
}
❌ Неправильно: users_id, id_user, userId, posts_id, user, post и т.п.
{
  "id": 151,
  "name": "Заголовок новости",
  "userId": 1,
}

{
  "id": 1,
  "name": "Пользователь Вася Пупкин заблокирован",
  "id_user": 1,
}

{
  "id": 1,
  "name": "Вася Пупкин написал комментарий",
  "user": 1,
}

Last updated