3 namespace Civi\Api4\Service\Schema\Joinable
;
5 class OptionValueJoinable
extends Joinable
{
9 protected $optionGroupName;
12 * @param string $optionGroup
13 * Can be either the option group name or ID
14 * @param string|null $alias
16 * @param string $keyColumn
17 * Which column to use to join, defaults to "value"
19 public function __construct($optionGroup, $alias = NULL, $keyColumn = 'value') {
20 $this->optionGroupName
= $optionGroup;
21 $optionValueTable = 'civicrm_option_value';
23 // default join alias to option group name, e.g. activity_type
24 if (!$alias && !is_numeric($optionGroup)) {
25 $alias = $optionGroup;
28 parent
::__construct($optionValueTable, $keyColumn, $alias);
30 if (!is_numeric($optionGroup)) {
31 $subSelect = 'SELECT id FROM civicrm_option_group WHERE name = "%s"';
32 $subQuery = sprintf($subSelect, $optionGroup);
33 $condition = sprintf('%s.option_group_id = (%s)', $alias, $subQuery);
36 $condition = sprintf('%s.option_group_id = %d', $alias, $optionGroup);
39 $this->addCondition($condition);
43 * The existing condition must also be re-aliased
45 * @param string $alias
49 public function setAlias($alias) {
50 foreach ($this->conditions
as $index => $condition) {
51 $search = $this->alias
. '.';
52 $replace = $alias . '.';
53 $this->conditions
[$index] = str_replace($search, $replace, $condition);
56 parent
::setAlias($alias);