QGIS API Documentation 3.41.0-Master (3c143d501a8)
Loading...
Searching...
No Matches
Classes | Public Member Functions | Static Public Member Functions | Properties | List of all members
QgsRelation Class Reference

Represents a relationship between two vector layers. More...

#include <qgsrelation.h>

Classes

class  FieldPair
 Defines a relation between matching fields of the two involved tables of a relation. More...
 

Public Member Functions

 QgsRelation ()
 Default constructor.
 
 QgsRelation (const QgsRelation &other)
 Copies a relation.
 
 QgsRelation (const QgsRelationContext &context)
 Constructor with context.
 
 ~QgsRelation ()
 
void addFieldPair (const FieldPair &fieldPair)
 Add a field pair which is part of this relation The first element of each pair are the field names of the foreign key.
 
void addFieldPair (const QString &referencingField, const QString &referencedField)
 Add a field pair which is part of this relation The first element of each pair are the field names of the foreign key.
 
QList< QgsRelation::FieldPairfieldPairs () const
 Returns the field pairs which form this relation The first element of each pair are the field names of the foreign key.
 
void generateId ()
 Generate a (project-wide) unique id for this relation.
 
QgsFeature getReferencedFeature (const QgsFeature &feature) const
 Creates a request to return the feature on the referenced (parent) layer which is referenced by the provided feature.
 
QgsFeatureRequest getReferencedFeatureRequest (const QgsAttributes &attributes) const
 Creates a request to return the feature on the referenced (parent) layer which is referenced by the provided feature.
 
QgsFeatureRequest getReferencedFeatureRequest (const QgsFeature &feature) const
 Creates a request to return the feature on the referenced (parent) layer which is referenced by the provided feature.
 
QgsFeatureIterator getRelatedFeatures (const QgsFeature &feature) const
 Creates an iterator which returns all the features on the referencing (child) layer which have a foreign key pointing to the provided feature.
 
QString getRelatedFeaturesFilter (const QgsFeature &feature) const
 Returns a filter expression which returns all the features on the referencing (child) layer which have a foreign key pointing to the provided feature.
 
QgsFeatureRequest getRelatedFeaturesRequest (const QgsFeature &feature) const
 Creates a request to return all the features on the referencing (child) layer which have a foreign key pointing to the provided feature.
 
bool hasEqualDefinition (const QgsRelation &other) const
 Compares the two QgsRelation, ignoring the name and the ID.
 
QString id () const
 A (project-wide) unique id for this relation.
 
bool isValid () const
 Returns the validity of this relation.
 
QString name () const
 Returns a human readable name for this relation.
 
QgsRelationoperator= (const QgsRelation &other)
 Copies a relation.
 
QgsPolymorphicRelation polymorphicRelation () const
 Returns the parent polymorphic relation.
 
QString polymorphicRelationId () const
 Returns the parent polymorphic relation id.
 
QgsAttributeList referencedFields () const
 Returns a list of attributes used to form the referenced fields (most likely primary key) on the referenced (parent) layer.
 
QgsVectorLayerreferencedLayer () const
 Access the referenced (parent) layer.
 
QString referencedLayerId () const
 Access the referenced (parent) layer's id.
 
QgsAttributeList referencingFields () const
 Returns a list of attributes used to form the referencing fields (foreign key) on the referencing (child) layer.
 
bool referencingFieldsAllowNull () const
 Returns true if none of the referencing fields has a NOT NULL constraint.
 
QgsVectorLayerreferencingLayer () const
 Access the referencing (child) layer This is the layer which has the field(s) which point to another layer.
 
QString referencingLayerId () const
 Access the referencing (child) layer's id This is the layer which has the field(s) which point to another layer.
 
Q_INVOKABLE QString resolveReferencedField (const QString &referencingField) const
 Gets the referenced field counterpart given a referencing field.
 
Q_INVOKABLE QString resolveReferencingField (const QString &referencedField) const
 Gets the referencing field counterpart given a referenced field.
 
void setId (const QString &id)
 Set an id for this relation.
 
void setName (const QString &name)
 Set a name for this relation.
 
void setPolymorphicRelationId (const QString &polymorphicRelationId)
 Sets the parent polymorphic relation id.
 
void setReferencedLayer (const QString &id)
 Set the referenced (parent) layer id.
 
void setReferencingLayer (const QString &id)
 Set the referencing (child) layer id.
 
void setStrength (Qgis::RelationshipStrength strength)
 Set a strength for this relation.
 
Qgis::RelationshipStrength strength () const
 Returns the relation strength as a string.
 
Qgis::RelationshipType type () const
 Returns the type of the relation.
 
void updateRelationStatus ()
 Updates the validity status of this relation.
 
QString validationError () const
 Returns a user-friendly explanation for why the relationship is invalid.
 
void writeXml (QDomNode &node, QDomDocument &doc) const
 Writes a relation to an XML structure.
 

Static Public Member Functions

static QString cardinalityToDisplayString (Qgis::RelationshipCardinality cardinality)
 Returns a user-friendly translated string representing a relationship cardinality.
 
static QgsRelation createFromXml (const QDomNode &node, QgsReadWriteContext &context, const QgsRelationContext &relationContext=QgsRelationContext())
 Creates a relation from an XML structure.
 
static QString strengthToDisplayString (Qgis::RelationshipStrength strength)
 Returns a user-friendly translated string representing a relationship strength.
 

Properties

QString id
 
bool isValid
 
QString name
 
QgsPolymorphicRelation polymorphicRelation
 
QString polymorphicRelationId
 
QgsVectorLayerreferencedLayer
 
QgsVectorLayerreferencingLayer
 

Detailed Description

Represents a relationship between two vector layers.

Definition at line 43 of file qgsrelation.h.

Constructor & Destructor Documentation

◆ QgsRelation() [1/3]

QgsRelation::QgsRelation ( )

Default constructor.

Creates an invalid relation.

Definition at line 29 of file qgsrelation.cpp.

◆ ~QgsRelation()

QgsRelation::~QgsRelation ( )
default

◆ QgsRelation() [2/3]

QgsRelation::QgsRelation ( const QgsRelationContext context)

Constructor with context.

Creates an invalid relation.

Definition at line 34 of file qgsrelation.cpp.

◆ QgsRelation() [3/3]

QgsRelation::QgsRelation ( const QgsRelation other)

Copies a relation.

This makes a shallow copy, relations are implicitly shared and only duplicated when the copy is changed.

Definition at line 42 of file qgsrelation.cpp.

Member Function Documentation

◆ addFieldPair() [1/2]

void QgsRelation::addFieldPair ( const FieldPair fieldPair)

Add a field pair which is part of this relation The first element of each pair are the field names of the foreign key.

The second element of each pair are the field names of the matching primary key.

Parameters
fieldPairA pair of two strings
Note
not available in Python bindings

Definition at line 183 of file qgsrelation.cpp.

◆ addFieldPair() [2/2]

void QgsRelation::addFieldPair ( const QString &  referencingField,
const QString &  referencedField 
)

Add a field pair which is part of this relation The first element of each pair are the field names of the foreign key.

The second element of each pair are the field names of the matching primary key.

Parameters
referencingFieldThe field name on the referencing (child) layer (FK)
referencedFieldThe field name on the referenced (parent) layer (PK)

Definition at line 176 of file qgsrelation.cpp.

◆ cardinalityToDisplayString()

QString QgsRelation::cardinalityToDisplayString ( Qgis::RelationshipCardinality  cardinality)
static

Returns a user-friendly translated string representing a relationship cardinality.

Since
QGIS 3.28

Definition at line 524 of file qgsrelation.cpp.

◆ createFromXml()

QgsRelation QgsRelation::createFromXml ( const QDomNode &  node,
QgsReadWriteContext context,
const QgsRelationContext relationContext = QgsRelationContext() 
)
static

Creates a relation from an XML structure.

Used for reading .qgs projects.

Parameters
nodeThe dom node containing the relation information
contextto pass project translator
relationContexta relation context
Returns
A relation

Definition at line 55 of file qgsrelation.cpp.

◆ fieldPairs()

QList< QgsRelation::FieldPair > QgsRelation::fieldPairs ( ) const

Returns the field pairs which form this relation The first element of each pair are the field names of the foreign key.

The second element of each pair are the field names of the matching primary key.

Returns
The fields forming the relation

Definition at line 332 of file qgsrelation.cpp.

◆ generateId()

void QgsRelation::generateId ( )

Generate a (project-wide) unique id for this relation.

Definition at line 298 of file qgsrelation.cpp.

◆ getReferencedFeature()

QgsFeature QgsRelation::getReferencedFeature ( const QgsFeature feature) const

Creates a request to return the feature on the referenced (parent) layer which is referenced by the provided feature.

Parameters
featureA feature from the referencing (child) layer
Returns
A request the referenced feature

Definition at line 274 of file qgsrelation.cpp.

◆ getReferencedFeatureRequest() [1/2]

QgsFeatureRequest QgsRelation::getReferencedFeatureRequest ( const QgsAttributes attributes) const

Creates a request to return the feature on the referenced (parent) layer which is referenced by the provided feature.

Parameters
attributesAn attribute vector containing the foreign key
Returns
A request the referenced feature

Definition at line 241 of file qgsrelation.cpp.

◆ getReferencedFeatureRequest() [2/2]

QgsFeatureRequest QgsRelation::getReferencedFeatureRequest ( const QgsFeature feature) const

Creates a request to return the feature on the referenced (parent) layer which is referenced by the provided feature.

Parameters
featureA feature from the referencing (child) layer
Returns
A request the referenced feature

Definition at line 269 of file qgsrelation.cpp.

◆ getRelatedFeatures()

QgsFeatureIterator QgsRelation::getRelatedFeatures ( const QgsFeature feature) const

Creates an iterator which returns all the features on the referencing (child) layer which have a foreign key pointing to the provided feature.

Parameters
featureA feature from the referenced (parent) layer
Returns
An iterator with all the referenced features
See also
getRelatedFeaturesRequest()
getRelatedFeaturesFilter()

Definition at line 190 of file qgsrelation.cpp.

◆ getRelatedFeaturesFilter()

QString QgsRelation::getRelatedFeaturesFilter ( const QgsFeature feature) const

Returns a filter expression which returns all the features on the referencing (child) layer which have a foreign key pointing to the provided feature.

Parameters
featureA feature from the referenced (parent) layer
Returns
expression filter string for all the referencing features
See also
getRelatedFeatures()
getRelatedFeaturesRequest()

Definition at line 205 of file qgsrelation.cpp.

◆ getRelatedFeaturesRequest()

QgsFeatureRequest QgsRelation::getRelatedFeaturesRequest ( const QgsFeature feature) const

Creates a request to return all the features on the referencing (child) layer which have a foreign key pointing to the provided feature.

Parameters
featureA feature from the referenced (parent) layer
Returns
A request for all the referencing features
See also
getRelatedFeatures()
getRelatedFeaturesFilter()

Definition at line 195 of file qgsrelation.cpp.

◆ hasEqualDefinition()

bool QgsRelation::hasEqualDefinition ( const QgsRelation other) const

Compares the two QgsRelation, ignoring the name and the ID.

Parameters
otherThe other relation
Returns
true if they are similar

Definition at line 412 of file qgsrelation.cpp.

◆ id()

QString QgsRelation::id ( ) const

A (project-wide) unique id for this relation.

Returns
The id

Definition at line 293 of file qgsrelation.cpp.

◆ isValid()

bool QgsRelation::isValid ( ) const

Returns the validity of this relation.

Don't use the information if it's not valid. A relation is considered valid if both referenced and referencig layers are valid.

Returns
true if the relation is valid
See also
validationError()

Definition at line 380 of file qgsrelation.cpp.

◆ name()

QString QgsRelation::name ( ) const

Returns a human readable name for this relation.

Mostly used as title for the children.

See also
id()
Returns
A name

Definition at line 283 of file qgsrelation.cpp.

◆ operator=()

QgsRelation & QgsRelation::operator= ( const QgsRelation other)

Copies a relation.

This makes a shallow copy, relations are implicitly shared and only duplicated when the copy is changed.

Definition at line 48 of file qgsrelation.cpp.

◆ polymorphicRelation()

QgsPolymorphicRelation QgsRelation::polymorphicRelation ( ) const

Returns the parent polymorphic relation.

If the relation is a normal relation, an invalid polymorphic relation is returned.

Since
QGIS 3.18

Definition at line 508 of file qgsrelation.cpp.

◆ polymorphicRelationId()

QString QgsRelation::polymorphicRelationId ( ) const

Returns the parent polymorphic relation id.

If the relation is a normal relation, a null string is returned.

Since
QGIS 3.18

Definition at line 503 of file qgsrelation.cpp.

◆ referencedFields()

QgsAttributeList QgsRelation::referencedFields ( ) const

Returns a list of attributes used to form the referenced fields (most likely primary key) on the referenced (parent) layer.

Returns
A list of attributes

Definition at line 337 of file qgsrelation.cpp.

◆ referencedLayer()

QgsVectorLayer * QgsRelation::referencedLayer ( ) const

Access the referenced (parent) layer.

Returns
referenced layer

Definition at line 327 of file qgsrelation.cpp.

◆ referencedLayerId()

QString QgsRelation::referencedLayerId ( ) const

Access the referenced (parent) layer's id.

Returns
The id of the referenced layer

Definition at line 322 of file qgsrelation.cpp.

◆ referencingFields()

QgsAttributeList QgsRelation::referencingFields ( ) const

Returns a list of attributes used to form the referencing fields (foreign key) on the referencing (child) layer.

Returns
A list of attributes

Definition at line 348 of file qgsrelation.cpp.

◆ referencingFieldsAllowNull()

bool QgsRelation::referencingFieldsAllowNull ( ) const

Returns true if none of the referencing fields has a NOT NULL constraint.

Since
QGIS 3.28

Definition at line 360 of file qgsrelation.cpp.

◆ referencingLayer()

QgsVectorLayer * QgsRelation::referencingLayer ( ) const

Access the referencing (child) layer This is the layer which has the field(s) which point to another layer.

Returns
The referencing layer

Definition at line 317 of file qgsrelation.cpp.

◆ referencingLayerId()

QString QgsRelation::referencingLayerId ( ) const

Access the referencing (child) layer's id This is the layer which has the field(s) which point to another layer.

Returns
The id of the referencing layer

Definition at line 312 of file qgsrelation.cpp.

◆ resolveReferencedField()

QString QgsRelation::resolveReferencedField ( const QString &  referencingField) const

Gets the referenced field counterpart given a referencing field.

Definition at line 417 of file qgsrelation.cpp.

◆ resolveReferencingField()

QString QgsRelation::resolveReferencingField ( const QString &  referencedField) const

Gets the referencing field counterpart given a referenced field.

Definition at line 427 of file qgsrelation.cpp.

◆ setId()

void QgsRelation::setId ( const QString &  id)

Set an id for this relation.

Definition at line 139 of file qgsrelation.cpp.

◆ setName()

void QgsRelation::setName ( const QString &  name)

Set a name for this relation.

Definition at line 147 of file qgsrelation.cpp.

◆ setPolymorphicRelationId()

void QgsRelation::setPolymorphicRelationId ( const QString &  polymorphicRelationId)

Sets the parent polymorphic relation id.

Since
QGIS 3.18

Definition at line 497 of file qgsrelation.cpp.

◆ setReferencedLayer()

void QgsRelation::setReferencedLayer ( const QString &  id)

Set the referenced (parent) layer id.

This layer will be searched in the registry.

Definition at line 168 of file qgsrelation.cpp.

◆ setReferencingLayer()

void QgsRelation::setReferencingLayer ( const QString &  id)

Set the referencing (child) layer id.

This layer will be searched in the registry.

Definition at line 160 of file qgsrelation.cpp.

◆ setStrength()

void QgsRelation::setStrength ( Qgis::RelationshipStrength  strength)

Set a strength for this relation.

Definition at line 154 of file qgsrelation.cpp.

◆ strength()

Qgis::RelationshipStrength QgsRelation::strength ( ) const

Returns the relation strength as a string.

Returns
strength

Definition at line 288 of file qgsrelation.cpp.

◆ strengthToDisplayString()

QString QgsRelation::strengthToDisplayString ( Qgis::RelationshipStrength  strength)
static

Returns a user-friendly translated string representing a relationship strength.

Since
QGIS 3.28

Definition at line 540 of file qgsrelation.cpp.

◆ type()

Qgis::RelationshipType QgsRelation::type ( ) const

Returns the type of the relation.

Since
QGIS 3.18

Definition at line 516 of file qgsrelation.cpp.

◆ updateRelationStatus()

void QgsRelation::updateRelationStatus ( )

Updates the validity status of this relation.

Will be called internally whenever a member is changed.

Since
QGIS 3.6

Definition at line 437 of file qgsrelation.cpp.

◆ validationError()

QString QgsRelation::validationError ( ) const

Returns a user-friendly explanation for why the relationship is invalid.

Returns an empty string if the relationship isValid().

See also
isValid()
Since
QGIS 3.28

Definition at line 385 of file qgsrelation.cpp.

◆ writeXml()

void QgsRelation::writeXml ( QDomNode &  node,
QDomDocument &  doc 
) const

Writes a relation to an XML structure.

Used for saving .qgs projects

Parameters
nodeThe parent node in which the relation will be created
docThe document in which the relation will be saved

Definition at line 119 of file qgsrelation.cpp.

Property Documentation

◆ id

QString QgsRelation::id
readwrite

Definition at line 47 of file qgsrelation.h.

◆ isValid

bool QgsRelation::isValid
read

Definition at line 51 of file qgsrelation.h.

◆ name

QString QgsRelation::name
readwrite

Definition at line 50 of file qgsrelation.h.

◆ polymorphicRelation

QgsPolymorphicRelation QgsRelation::polymorphicRelation
read

Definition at line 53 of file qgsrelation.h.

◆ polymorphicRelationId

QString QgsRelation::polymorphicRelationId
readwrite

Definition at line 52 of file qgsrelation.h.

◆ referencedLayer

QgsVectorLayer * QgsRelation::referencedLayer
read

Definition at line 49 of file qgsrelation.h.

◆ referencingLayer

QgsVectorLayer * QgsRelation::referencingLayer
read

Definition at line 48 of file qgsrelation.h.


The documentation for this class was generated from the following files: