33namespace Lomkit \Rest \Relations ;
44
55use Illuminate \Database \Eloquent \Model ;
6- use Illuminate \Validation \Rule ;
76use Lomkit \Rest \Contracts \QueryBuilder ;
87use Lomkit \Rest \Contracts \RelationResource ;
9- use Lomkit \Rest \Http \Resource ;
108
119class MorphTo extends MorphRelation implements RelationResource
1210{
13- /**
14- * Create a new MorphTo instance.
15- *
16- * @param string $relation The name of the relation.
17- * @param array $types An array of allowed types for the relation.
18- */
19- public function __construct ($ relation , array $ types )
20- {
21- $ this ->relation = $ relation ;
22- $ this ->types = $ types ;
23- }
24-
2511 /**
2612 * Perform actions before mutating the MorphTo relation.
2713 *
@@ -34,29 +20,8 @@ public function beforeMutating(Model $model, Relation $relation, array $mutation
3420 $ model
3521 ->{$ relation ->relation }()
3622 ->{$ mutationRelations [$ relation ->relation ]['operation ' ] === 'detach ' ? 'dissociate ' : 'associate ' }(
37- app ()->make (QueryBuilder::class, ['resource ' => new $ mutationRelations [ $ relation ->relation ][ ' type ' ] ()])
23+ app ()->make (QueryBuilder::class, ['resource ' => $ relation ->resource ()])
3824 ->applyMutation ($ mutationRelations [$ relation ->relation ])
3925 );
4026 }
41-
42- /**
43- * Define validation rules for the MorphTo relation.
44- *
45- * @param resource $resource The resource associated with the relation.
46- * @param string $prefix The prefix used for validation rules.
47- *
48- * @return array An array of validation rules.
49- */
50- public function rules (Resource $ resource , string $ prefix )
51- {
52- return [
53- ...parent ::rules ($ resource , $ prefix ),
54- $ prefix .'.type ' => [
55- 'required_with: ' .$ prefix ,
56- Rule::in (
57- $ this ->types
58- ),
59- ],
60- ];
61- }
6227}
0 commit comments