cakephpcakephp-3.xcakephp-model

Custom model function to insert a new record in cakephp 3


I'm new to CakePHP. I have a table to keep record of user's activity by creating a log in it. The table has two columns

+----+------------+-----------+
| id | user_id    | comment   |
+----+------------+-----------+

I want to pass values from within controller like

$this->ActivityLogs->log($user_id, 'Message sent');

log is a custom function inside ActivityLogs model which will record some more data along with passed data

public function log($user_id = null, $message = null)
{ 
   ... record code goes here

   return true;
}

But couldn't get how to write insert query inside model. How can I create custom methods like this and also can anyone suggest me good resource to go through model queries and understanding.


Solution

  • public function log($user_id = null, $message = null){
        //I assume here that your table name is 'logs'
        $logsTable = \Cake\ORM\TableRegistry::get('Logs', array('table' => 'logs'));
        $log = $logsTable->newEntity();
    
        $log->user_id = $user_id;
        $log->body = $message ;
    
        if ($logsTable->save($log)) {
            return true;
        }
        return false;
    }