@@ -63,23 +63,38 @@ public function genModel(
6363 $ generated = true ;
6464 }
6565
66- $ cast = ' ' ;
66+ $ cast = '' ;
6767 if ($ notNullable && $ value ['type ' ] == 'boolean ' ) {
68- $ cast = ' (bool) ' ;
68+ $ cast = '(bool) ' ;
69+ }
70+ if ($ notNullable && $ withStore ) {
71+ $ cast = '( ' . $ this ->convertType ($ value ['type ' ]) . ') ' ;
72+ }
73+ $ getterBody = '$this->getData(self:: ' . strtoupper ($ name ) . ') ' ;
74+ if ($ value ['type ' ] == 'json ' ) {
75+ $ cast = '' ;
76+ $ getterBody = 'json_decode($this->getData(self::OPTIONS) ?? ' . ($ notNullable ? '\'[] \'' : '\'null \'' ) . ', true) ' ;
6977 }
7078
7179 $ getterName = $ this ->createGetterName ($ name , $ value );
7280 $ getter = $ class ->addMethod ($ getterName [0 ])
7381 ->addComment ($ getterName [1 ])
7482 ->setVisibility ('public ' )
75- ->setBody ('return ' . $ cast . ' $this->getData(self:: ' . strtoupper ( $ name ) . ' ) ; ' );
83+ ->setBody ('return ' . $ cast . $ getterBody . ' ; ' );
7684
7785 $ setterName = $ this ->createSetterName ($ name , $ value );
7886 $ setter = $ class ->addMethod ($ setterName [0 ])
7987 ->addComment ($ setterName [1 ])
8088 ->setVisibility ('public ' );
8189 $ setParam = $ setter ->addParameter ($ this ->snakeCaseToCamelCase ($ name ));
82- $ setter ->setBody ('return $this->setData(self:: ' . strtoupper ($ name ) . ', $ ' . $ this ->snakeCaseToCamelCase ($ name ) . '); ' );
90+ $ setterBody = '$ ' . $ this ->snakeCaseToCamelCase ($ name );
91+ if ($ value ['type ' ] == 'json ' && !$ notNullable ) {
92+ $ setterBody = 'null === $options ? json_encode($options) : null ' ;
93+ }
94+ if ($ value ['type ' ] == 'json ' && $ notNullable ) {
95+ $ setterBody = 'json_encode($options) ' ;
96+ }
97+ $ setter ->setBody ('return $this->setData(self:: ' . strtoupper ($ name ) . ', ' . $ setterBody . '); ' );
8398
8499 $ getter ->setReturnType ($ this ->convertType ($ value ['type ' ]));
85100 $ getter ->setReturnNullable ($ generated ? true : !$ notNullable );
0 commit comments