addBehavior('UUID'); $this->addBehavior('Timestamp'); $this->belongsTo('Users'); $this->addBehavior('AuditLog'); $this->setDisplayField('title'); } protected function _initializeSchema(TableSchemaInterface $schema): TableSchemaInterface { $schema->setColumnType('data', 'json'); return $schema; } public function validationDefault(Validator $validator): Validator { $validator ->notEmptyString('scope') ->notEmptyString('action') ->notEmptyString('title') ->datetime('created') ->requirePresence([ 'scope' => ['message' => __('The field `scope` is required')], 'action' => ['message' => __('The field `action` is required')], 'title' => ['message' => __('The field `title` is required')], ], 'create'); return $validator; } public function buildRules(RulesChecker $rules): RulesChecker { $rules->add($rules->existsIn('user_id', 'Users'), [ 'message' => 'The provided `user_id` does not exist' ]); return $rules; } public function createEntry($entryData, $user = null) { $savedEntry = $this->save($entryData); return $savedEntry; } }