'required|string|max_length[9]', ]; protected $useTimestamps = true; protected $createdField = 'created_at'; protected $updatedField = 'updated_at'; protected $returnType = 'array'; // Or 'object' if preferred public function getChargesWithEventInfo($parentId = null, $schoolYear = null, $semester = null) { $builder = $this->select('event_charges.*, events.event_name, events.amount AS event_amount, events.description AS event_description') ->join('events', 'events.id = event_charges.event_id', 'left'); if ($parentId) { $builder->where('event_charges.parent_id', $parentId); } if ($schoolYear) { $builder->where('event_charges.school_year', $schoolYear); } if ($semester) { $builder->where('event_charges.semester', $semester); } return $builder->findAll(); } }