IceHrm
Let’s check how we can add data into the newly created table.
In order to communicate with the database, you need a model. IceHrm uses AdoDB as the ORM. But it provides an abstraction layer on top of AdoDB.
📦extensions ┣ 📂tasks ┃ ┣ 📂src ┃ ┃ ┗ 📂Tasks ┃ ┃ ┃ ┣ 📂Model ┃ ┃ ┃ ┃ ┗ 📜Task.php ┃ ┃ ┃ ┣ 📜Extension.php ┃ ┃ ┃ ┗ 📜Migration.php ┃ ┣ 📂web ┃ ┃ ┗ 📜index.php ┃ ┣ 📜meta.json ┃ ┗ 📜tasks.php ┗
Task.php
<?php namespace Tasks\Model; use Classes\ModuleAccess; use Model\BaseModel; class Task extends BaseModel { public $table = 'Tasks'; }
tasks.php
<?php require_once __DIR__.'/src/Tasks/Extension.php'; require_once __DIR__.'/src/Tasks/Migration.php'; require_once __DIR__.'/src/Tasks/Model/Task.php';
Just for testing we will create a new task on the view file itself, and print it on screen.
<?php $user = \Classes\BaseService::getInstance()->getCurrentUser(); echo "Welcome ".$user->username."<br/>"; echo "Creating a task <br/>"; $task = new \Tasks\Model\Task(); $taskName = 'Task-'.rand(rand(0, 100), 50000); $task->name = $taskName; $task->employee = $user->employee; $task->description = $taskName.' description'; $task->created = date('Y-m-d H:i:s'); $task->updated = date('Y-m-d H:i:s'); /** * Saving the task, $ok will be false if there were any error during the creation */ $ok = $task->Save(); if (!$ok) { echo "Error: ".$task->ErrorMsg()." <br/>"; } echo "Find last task <br/>"; $taskFromDB = new \Tasks\Model\Task(); /** * You can use load method to load the first matching task into an empty model */ $taskFromDB->Load('name = ?', [$taskName]); var_dump($taskFromDB);
Please find all the code up to this point here: https://github.com/gamonoid/icehrm/tree/extension-example-models/extensions/tasks
Powered by BetterDocs