Final Class Yiisoft\Db\Pgsql\Column\NumMultiRangeColumn
| Inheritance | Yiisoft\Db\Pgsql\Column\NumMultiRangeColumn » Yiisoft\Db\Pgsql\Column\AbstractMultiRangeColumn » Yiisoft\Db\Schema\Column\AbstractColumn |
|---|
Public Methods
| Method | Description | Defined By |
|---|---|---|
| dbTypecast() | Yiisoft\Db\Pgsql\Column\AbstractMultiRangeColumn | |
| phpTypecast() | Yiisoft\Db\Pgsql\Column\AbstractMultiRangeColumn |
Protected Methods
| Method | Description | Defined By |
|---|---|---|
| getRangeColumn() | Yiisoft\Db\Pgsql\Column\NumMultiRangeColumn |
Constants
| Constant | Value | Description | Defined By |
|---|---|---|---|
| DEFAULT_TYPE | \Yiisoft\Db\Pgsql\Constant\PgsqlColumnType::NUMMULTIRANGE | Yiisoft\Db\Pgsql\Column\NumMultiRangeColumn |
Method Details
| public mixed dbTypecast ( mixed $value ) | ||
| $value | mixed | |
public function dbTypecast(mixed $value): mixed
{
if ($value === null
|| is_string($value)
|| $value instanceof ExpressionInterface) {
return $value;
}
if (!is_array($value)) {
$this->throwWrongTypeException(gettype($value));
}
$rangeColumn = $this->getRangeColumn();
$ranges = [];
foreach ($value as $rawRange) {
$range = $rangeColumn->dbTypecast($rawRange);
if (!is_string($range)
&& !$range instanceof ExpressionInterface) {
$this->throwWrongTypeException(gettype($rawRange));
}
$ranges[] = $range;
}
return new MultiRangeValue(...$ranges);
}
| protected \Yiisoft\Db\Schema\Column\ColumnInterface getRangeColumn ( ) |
protected function getRangeColumn(): ColumnInterface
{
return new NumRangeColumn();
}
| public mixed phpTypecast ( mixed $value ) | ||
| $value | mixed | |
public function phpTypecast(mixed $value): mixed
{
/**
* @var string|null $value We expect `phpTypecast()` to only receive the value that the database returns, which
* in this case is `null` or a `string`. To avoid extra checks.
*/
if ($value === null) {
return null;
}
if ($value === '{}') {
return [];
}
if (preg_match('/^{([\[\(][^,]*,[^\)\]]*[\)\]])(?:,(?1))*}$/', $value) !== 1) {
throw new NotSupportedException('Unsupported multirange format');
}
preg_match_all('/[\[\(][^,]*,[^\)\]]*[\)\]]/', $value, $matches);
$rangeColumn = $this->getRangeColumn();
return array_map(
$rangeColumn->phpTypecast(...),
$matches[0],
);
}
Signup or Login in order to comment.