Welcome Guest, Not a member yet? Register   Sign In
createdField & updatedField & deleteUpdate Cant Update
#1

By user guide, i can be automatically updated field created,modified and deleted date with set name field on variable CI 4.

My Table :
[Image: image.png]

My Model :
PHP Code:
<?php
namespace App\Models;

use 
CodeIgniter\Model;
use 
Config\Services;

class 
UsersModel extends Model
{
    protected $table            'sm_user';
    protected $primaryKey      'user_no';
    protected $useAutoIncrement true;
    protected $returnType      'array';
    protected $allowedFields    = [
        'user_company',
        'user_name',
        'user_email',
        'user_password',
        'user_phone',
        'user_register_token',
        'user_register_flag',
        'user_reset_token',
        'user_reset_flag',
        'user_lastlogin',
        'user_created_by',
        'user_modified_by',
        'user_deleted_by',
        'user_locked',
    ];
    protected $useSoftDeletes  true;
    protected $useTimestamps    true;
    protected $createdField    'user_created_date';
    protected $updatedField    'user_modified_date';
    protected $deletedField    'user_deleted_date';
    
    
protected $beforeInsert      = ['hashPassword','registerToken','resetToken'];
    protected $beforeUpdate      = ['hashPassword'];
    protected $allowCallbacks    true;
    
    
protected $validationRules    = [
        'user_company'  => 'required|integer',
        'user_name'    => 'required|alpha_numeric_space|max_length[60]',
        'user_email'    => 'required|valid_email|is_unique[sm_user.user_email]',
        'user_password' => 'required|min_length[12]|checkCombinationPasswords',
        'user_phone'    => 'required|numeric|max_length[15]',
    ];
    protected $validationMessages = [];
    protected $skipValidation    false;

    public function __construct()
    {
        helper('date');

        $this->db        = \Config\Database::connect();
        $this->builder  $this->db->table($this->table);
        $this->encrypter Services::encrypter();
    }

    protected function checkCombinationPasswords(string $password ''): bool
    
{
        if(! empty($password)){
            $uppercase preg_match('@[A-Z]@'$password);
            $lowercase preg_match('@[a-z]@'$password);
            $number preg_match('@[0-9]@'$password);
            $specialChars preg_match('@[^\w]@'$password);

            if(!$uppercase || !$lowercase || !$number || !$specialChars || strlen($password) < 12) {
                return false;
            }

            return true;
        }

        return false;
    }

    /**
    * -----------------------------------------
    * Hash Password
    * -----------------------------------------
    * 
    * Function Hash Password beforeInsert
    * and beforeUpdate
    * 
    * @param array $data Data Models
    */
    protected function hashPassword(array $data): array
    {
        if (! isset($data['data']['user_password'])) {
            return $data;
        }

        $data['data']['user_password'] = password_hash($data['data']['user_password'], PASSWORD_DEFAULT);
        
        
return $data;
    }

    /**
    * -----------------------------------------
    * Generate Token - Register
    * -----------------------------------------
    * 
    * Function Generate Token Register beforeInsert
    * 
    * @param array $data Data Models
    */
    protected function registerToken(array $data): array
    {
        if (! isset($data['data']['user_register_token'])) {
            return $data;
        }

        $data['data']['user_register_token'] = $this->encrypter->encrypt($data['data']['user_register_token']);
        
        
return $data;
    }

    /**
    * -----------------------------------------
    * Generate Token - Reset
    * -----------------------------------------
    * 
    * Function Generate Token Reset
    * beforeInsert
    * 
    * @param array $data Data Models
    */
    protected function resetToken(array $data): array
    {
        if (! isset($data['data']['user_reset_token'])) {
            return $data;
        }

        $data['data']['user_reset_token'] = $this->encrypter->encrypt($data['data']['user_reset_token']);
        
        
return $data;
    }

    /**
    * -----------------------------------------
    * Finding Data
    * -----------------------------------------
    *
    * @param string $selectParams Selected Field with Delimeter Commma (,)
    * @param array $whereParams More Where with Array Like ['field_name' => 'value'] or ['field_name >' => 3]
    * @param array $joinParams Join more with Array Like
    * [
    *      1 => [
    *          'to' => [
    *                  'table' => 'tb_field,
    *                  'condition' => 'tb_field.id = tb_fieldother.id'
    *          ],
    *          'type' => 'inner',
    *      ],
    * ]
    */
    public function findData(string $selectParams '*', array $whereParams = [], array $joinParams = []): array
    {
        $this->builder->select($selectParams);

        if (count($joinParams) > 0) {
            foreach ($joinParams as $index => $val) {
                $this->builder->join($joinParams[$index]['to']['table'], $joinParams[$index]['to']['condition'], $joinParams[$index]['type']);
            }
        }

        if (count($whereParams) > 0) {
            $this->builder->where($whereParams);
        }

        $findData $this->builder->get();

        return $findData->getResultArray();
    }

    /**
    * -----------------------------------------
    * Save Data
    * -----------------------------------------
    * 
    * Simpan Data User.
    *
    * @param array $data Data User
    */
    public function saveData(array $data = [])
    {
        return $this->builder->insert($data);
    }

    /**
    * -----------------------------------------
    * Delete Data
    * -----------------------------------------
    * 
    * Delete Data User.
    *
    * @param int $id Data User
    * @param int $byDeleted Deleted by User
    */
    public function deleteData(int $id 0)
    {  
        
return $this->builder->delete(intval($id));
    }


My Result Data in row 2 :
[Image: image.png]
[Image: image.png]

Anyone can help is wrong in my type data in database or my models? And why $beforeInsert & $beforeUpdate cant work?
Reply


Messages In This Thread
createdField & updatedField & deleteUpdate Cant Update - by flux1on - 06-01-2022, 09:53 PM



Theme © iAndrew 2016 - Forum software by © MyBB