ttoggaiman
ttoggaiman

Reputation: 71

how to execute join query in realm with swift?

I want to execute join query

table1)
class student 
{
   name:String
   classcode:Int
}

table2)
class classcode
{
   classcode:Int
   name:String
}

Data example

student:

| name | classcode |
| john | 001       |
| Kim  | 002       |

classcode:

| classcode | name     |
| 001       | computer | 
| 002       | Math     |

I want to get output -? john,computer

How can I execute the query in Realm?

Upvotes: 1

Views: 4614

Answers (1)

TiM
TiM

Reputation: 15991

Realm is an object-based database, so the concept of joins in queries doesn't apply to it.

In this particular case, it would be appropriate to set up classcode objects as a list in the student class. Like so:

class Class: Object {
   dynamic var classCode = 0
   dynamic var name = ""
}

class Student: Object {
   dynamic var name = ""
   let classes = List<Class>()
}

--- 

let realm = try! Realm()

let computerClass = Class()
computerClass.classCode = 1
computerClass.name = "Computer"

let newStudent = Student()
newStudent.name = "John"
newStudent.classes.append(computerClass)

try! realm.write {
    realm.add(computerClass)
    realm.add(newStudent)
}

Realm List objects do not store copies of Object instances; they only store references to the corresponding Object in its table. In this way, it replicates the same sort of setup you'd expect in a join query.

Let me know if you need anymore clarification! :)

Upvotes: 2

Related Questions