Parse-платформа использует join в Android - PullRequest
1 голос
/ 29 апреля 2019

Я создаю приложение, используя back4app , базирующееся на базе данных parse-platform.

моя схема базы данных выглядит так:

Users table:
id
User_name
....
Items table:
id (f)
Item_name
Count
.....
User item table:
Id
User_id
Item_id
item_status
item_notes
......

что я хочу достичь - это получить item_name, имея user_id, как это возможно, используя parse в Android?

Редактировать : чтобы быть понятным ... каждый элемент будет определен в таблице User_Item, даже если это один и тот же элемент, потому что пользователь может измениться в любое время. вот почему я хочу, чтобы user_id получил имя_пункта из таблицы items.

1 Ответ

2 голосов
/ 29 апреля 2019

Я предполагаю, что вы хотите запросить 'таблицу элементов пользователя', так что ...

Прежде всего, ваше поле itemId должно быть указателем на объект в «таблице предметов», таким образом, вы можете использовать query.include("itemId");, что означает, что объект из «таблицы предметов» также будет возвращен с запрос.

Ниже приведен пример полного запроса для этого:

ParseQuery<ParseObject> query = ParseQuery.getQuery("UserItem");

query.include("itemId");

query.getFirstInBackground(new GetCallback<ParseObject>() {
  public void done(ParseObject object, ParseException e) {
    ParseObject item = object.getParseObject("itemId");
    String itemName = item.getString("Item_name");
  }
});

Я не использую Android SDK, так что этот код может быть не идеальным - для получения более подробной информации см. Руководство для Android (я снял весь этот код оттуда).

Edit:

Добавьте query.whereEqualTo("User_id", "xxxxx");, чтобы получить элемент User для текущего пользователя (замените xxxxx на идентификатор пользователя).

ParseQuery<ParseObject> query = ParseQuery.getQuery("UserItem");

query.include("itemId");
query.whereEqualTo("User_id", "xxxxx");

query.getFirstInBackground(new GetCallback<ParseObject>() {
  public void done(ParseObject object, ParseException e) {
    ParseObject item = object.getParseObject("itemId");
    String itemName = item.getString("Item_name");
  }
});
...