Working with Relationships
Accessing Related Models
Related models are available on the model directly using the relationship name. They are easily differentiated by their CamelCase
naming conventions:
$group = $member->PrimaryRole;
Note: If you are filtering on relationship the related models will be limited to those that match the criteria specified. If you need full set of related models, you would need to eager load the relationship to be populated before eager loading the relationship for the filter, which will need to be aliased.
$entry = ee('Model')->get('ChannelEntry')->with('Categories', 'Categories as RelatedCategory')->filter('RelatedCategory.cat_id', 7)->all();
Setting Relationships
To set a relationship, simply assign the model or collection that you want to relate, and then save()
to commit the change:
$member->PrimaryRole = ee('Model')->get('Role', 1)->first();
$member->save();
Adding Related Models
To add additional models to a HasMany
or HasAndBelongsToMany
relationship, simply use PHP’s array syntax, or call add()
with a model to add:
$member_group[] = $member;
$member_group->add($member);
Removing Related Models
To unset a relationship, simply assign NULL
:
$member->PrimaryRole = NULL;
Caution: Unsetting a relationship may result in the deletion of the child, where it would otherwise be orphaned. This can be prevented by establishing a new relationship before calling save()
.
To remove a related model from a collection, call remove()
with the related model or its primary key value:
$member_group->remove($member);
$member_group->remove(5); // remove member_id 5