Retrieving relation not working(Swift)

I have a table UserGroups and it has a one-many relation with users table. I am trying to fetch user records from UserGroups using the following code:

    let dataQuery = BackendlessDataQuery()

    

    dataQuery.whereClause = "UserGroups[users].email = \'\(email)\'"

    

    

    var error: Fault?

    let bc = backendless.data.of(UserGroups.ofClass()).find(dataQuery, fault: &error)

    if error == nil {

        

        let contacts = bc.getCurrentPage()

        

        for theGroup in contacts as! [UserGroups]{

           print(theGroup.users)

        

        }

        

    }

    else {

        print("Server reported an error: \(error)")

    }

I am getting the following error: Server reported an error: Optional(FAULT = ‘1017’ [Invalid where clause. Specified Entity: UserGroups[users] is not related to lowerLevelEntity: UserGroups]

Can you please tell me if I am doing anything wrong?

Thank you

Is the relation column defined in the UserGroups table?

I got it to work. Thank you.

How ? please reply I got same problem…

Akash, Please investigate this doc, in particular, “Loading a Subset of Related Child Objects” section.

distance( 17.438975,78.4000716, geoPoint.latitude, geoPoint.longitude ) < km(1) and (ParkingLot[bike].availableSlots > 0 OR ParkingLot[car].availableSlots > 0)

where,
availableSlots is column in Bike and Car table.
I want to load parking Lots where bike and car availableSlots are greater than 0.
ParkingLot table has one to one relation with Bike and Car table

Hi,

I have a similar issue here. Could someone please, share the code for retrieving data including a where clause on the child object?

Alejandro,

What API do you use to retrieve data? And what problem are you experiencing?

Mark

Hi , thank you for your responsek. To be honest I am essentially a beginner and I am stuck on this point.

My issue is using iOS API (swift).

I have a table called “solicitudes” as follows:

And I want ro retrieve all objects from this table where Usuario is a given BackendlessUser.

I coded like this:

static func listaEquiposPendienteAceptar(DTMID: String, completion: @escaping (Result< Peticiones, Error>) -> ()){
        let queryBuilder = DataQueryBuilder()
        queryBuilder.whereClause = "BDSolicitudes[Usuario].objectId = " + DTMID

    let dataStore = Backendless.shared.data.of(BDSolicitudes.self)
    dataStore.find(queryBuilder:  queryBuilder, responseHandler: { resultados in
        let solicitudes = resultados as! [BDSolicitudes]
        if solicitudes.count > 0 {
            for sol in solicitudes{
                let pet = Peticiones(objectId: sol.objectId!, Usuario: sol.Usuario!.objectId!, Equipo: sol.Equipo!.objectId!)
                completion(.success(pet))
            }
        }
            }, errorHandler: { fault in
                print("Error: \(fault.message ?? "")")
                completion(.failure(fault))
            })

}

Hello @Alejandro_Cuartas_Fernandez,

Please try to change your whereClause:

queryBuilder.whereClause = "Usuario.objectId = 'XXX'"

and make sure you have the single quotes around the objectId.

More info about subqueries can be found here: https://backendless.com/docs/ios/data_search_with_subquery.html

Regards,
Olha

1 Like

Thank you, it does work now!!!