1: <?php
2:
3: declare(strict_types=1);
4:
5: namespace Atk4\Data\Persistence\Sql;
6:
7: use Atk4\Core\WarnDynamicPropertyTrait;
8: use Atk4\Data\Field;
9: use Atk4\Data\Model;
10:
11: /**
12: * TODO shortName should be used by DSQL automatically when in GROUP BY, HAVING, ...
13: */
14: class MaterializedField implements Expressionable
15: {
16: use WarnDynamicPropertyTrait;
17:
18: protected Field $field;
19:
20: public function __construct(Model $context, Field $field)
21: {
22: $field->getOwner()->assertIsModel($context);
23:
24: $this->field = $field;
25: }
26:
27: #[\Override]
28: public function getDsqlExpression(Expression $expression): Expression
29: {
30: return $expression->expr('{}', [$this->field->shortName]);
31: }
32: }
33: