t('Redundancy Group Display Name') ]; } public function createBehaviors(Behaviors $behaviors): void { $behaviors->add(new Binary([ 'id', 'environment_id' ])); $behaviors->add(new ReRoute([ 'child' => 'to.from', 'parent' => 'from.to' ])); } public function createRelations(Relations $relations): void { $relations->hasOne('state', RedundancyGroupState::class) ->setJoinType('LEFT'); $relations->hasOne('dependency_node', DependencyNode::class)->setJoinType('LEFT'); $relations->belongsToMany('from', DependencyEdge::class) ->setTargetCandidateKey('from_node_id') ->setTargetForeignKey('id') ->through(DependencyNode::class); $relations->belongsToMany('to', DependencyEdge::class) ->setTargetCandidateKey('to_node_id') ->setTargetForeignKey('id') ->through(DependencyNode::class); } public function createDefaults(Defaults $defaults): void { $defaults->add('summary', function (RedundancyGroup $group) { $summary = RedundancyGroupSummary::for($group->id, Backend::getDb()); $this->applyRestrictions($summary); return $summary->first(); }); } }