Custom model function to insert a new record in cakephp 3

2k views Asked by At

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.

1

There are 1 answers

0
beta-developper On BEST ANSWER
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;
}