Связь таблиц. Parse server


#1

Утро доброе!
Учусь, но выбрал не простую задачу. Сейчас задумался над связями таблиц.
В parse созданы “классы” (таблицы): user, order, category, headers.
Category напрямую зависит от headers (связь один ко многим).
В order должна быть жесткая связь с category и user.
Но вот вопрос, в парсе нигде не могу найти создание этих связей.
В нем же не могу сообразить как же построить логику.
Как ранее сталкивался с базами, то по модели данных бд можно проследить как и что должно работать. Тут я не понимаю ничего.

Грубо говоря сейчас вижу что в order нужно дублировать данные из user и category…но это бред.


#2

Так, надо больше изучать возможности parse.
Кажется выходом для моего вопроса являются столбцы типа “Relation”.

Верно я понял?


#3

Есть два кастомных класса в parse локальном.
Header и Category

Каждый Header включает в себя несколько Category (установлена связь relation).
Подскажите, как вывести массив всех Category для опделенного Header?


#4

Ну пожалуйста, помогите, совсем запутался уже

  func fromParse() {

    let query = PFQuery(className: "Header")
    print(query)
    query.findObjectsInBackground { (objects, error) in
        if error == nil {
            // Объекты найдены. Перебираем
            for object in objects! {
                self.headerArray.append(object["header"] as! String)
                print(self.headerArray)

                let currentHeader = object["header"] as! String
                print(currentHeader)
                
                let currentCategory = PFQuery(className: "Category")
                currentCategory.whereKey("idHeader", equalTo: currentHeader)
                
                // здесь пытаюсь по Header`ам получить связанные элементы из Category. Но сам уже запутался что куда
                let query2 = PFQuery(className: "Header")
                query2.whereKey("header", doesNotMatch: currentCategory)
                print(query2.whereKey("header", doesNotMatch: currentCategory))
                query2.findObjectsInBackground { (objects, error) in
                    if error == nil {
                        // The find succeeded.
                        // Do something with the found objects
                        for object in objects! {
                            print(object["idHeader"])
                            //var listHZ =
                        }} else {
                        print("ашибка") }
                }
            }
            self.tableView.reloadData()
            
            
        } else {
            
            // Log details of the failure
            
            print("Error: \(error!)")
            
        }
        
    }
}