atk4\data\Reference_Many::addField PHP Method

addField() public method

Used in aggregate strategy.
public addField ( string $n, array $defaults = [] ) : Field_Callback
$n string Field name
$defaults array Properties
return Field_Callback
    public function addField($n, $defaults = [])
    {
        if (!isset($defaults['aggregate'])) {
            throw new Exception(['"aggregate" strategy should be defined for oneToMany field', 'field' => $n, 'defaults' => $defaults]);
        }
        $field = isset($defaults['field']) ? $defaults['field'] : $n;
        $e = $this->owner->addExpression($n, function () use($defaults, $field) {
            return $this->refLink()->action('fx', [$defaults['aggregate'], $field]);
        });
        if (isset($defaults['type'])) {
            $e->type = $defaults['type'];
        } else {
            $e->type = $this->guessFieldType($field);
        }
        return $e;
    }