22
33namespace Vormkracht10 \FilamentFields \Models ;
44
5+ use Illuminate \Support \Facades \Config ;
56use Illuminate \Database \Eloquent \Model ;
7+ use Illuminate \Database \Eloquent \Concerns \HasUlids ;
8+ use Illuminate \Database \Eloquent \Relations \HasMany ;
9+ use Illuminate \Database \Eloquent \Relations \MorphTo ;
10+ use Illuminate \Database \Eloquent \Relations \BelongsTo ;
11+ use Vormkracht10 \FilamentFields \Shared \HasPackageFactory ;
12+ use Staudenmeir \LaravelAdjacencyList \Eloquent \HasRecursiveRelationships ;
613
7- class Field extends Model {}
14+ class Field extends Model
15+ {
16+ use HasPackageFactory;
17+ use HasUlids;
18+ use HasRecursiveRelationships;
19+
20+ protected $ primaryKey = 'ulid ' ;
21+
22+ protected $ guarded = [];
23+
24+ protected function casts (): array
25+ {
26+ return [
27+ 'config ' => 'array ' ,
28+ ];
29+ }
30+
31+ public function model (): MorphTo
32+ {
33+ return $ this ->morphTo ('model ' , 'model_type ' , 'model_key ' , 'slug ' );
34+ }
35+
36+ public function children (): HasMany
37+ {
38+ return $ this ->hasMany (Field::class, 'parent_ulid ' )->with ('children ' )->orderBy ('position ' );
39+ }
40+
41+ public function tenant (): ?BelongsTo
42+ {
43+ $ tenantRelationship = Config::get ('fields.tenant_relationship ' );
44+ $ tenantModel = Config::get ('fields.tenant_model ' );
45+
46+ if ($ tenantRelationship && class_exists ($ tenantModel )) {
47+ return $ this ->belongsTo ($ tenantModel , $ tenantRelationship . '_ulid ' );
48+ }
49+
50+ return null ;
51+ }
52+ }
0 commit comments