Skip to content
This repository was archived by the owner on Jan 7, 2025. It is now read-only.

Commit 73eac83

Browse files
Add custom cast for efficient UUIDs
1 parent 7e56d7b commit 73eac83

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

src/Casts/EfficientUuid.php

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
3+
namespace Dyrynda\Database\Support\Casts;
4+
5+
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
6+
7+
class EfficientUuid implements CastsAttributes
8+
{
9+
/**
10+
* Transform the attribute from the underlying model values.
11+
*
12+
* @param \Illuminate\Database\Eloquent\Model $model
13+
* @param string $key
14+
* @param mixed $value
15+
* @param array $attributes
16+
* @return mixed
17+
*/
18+
public function get($model, string $key, $value, array $attributes)
19+
{
20+
return $model->resolveUuid()->fromBytes($value)->toString();
21+
}
22+
23+
/**
24+
* Transform the attribute to its underlying model values.
25+
*
26+
* @param \Illuminate\Database\Eloquent\Model $model
27+
* @param string $key
28+
* @param mixed $value
29+
* @param array $attributes
30+
* @return array
31+
*/
32+
public function set($model, string $key, $value, array $attributes)
33+
{
34+
return [
35+
$key => $model->resolveUuid()->fromString(strtolower($value))->getBytes(),
36+
];
37+
}
38+
}

0 commit comments

Comments
 (0)