CakePHP Update a Record in database

cakephp

To update a record in a database using CakePHP, you’ll need to create a controller action that accepts the updated data from the user, uses the CakePHP ORM to retrieve the record, updates the record with the new data, and then saves the record back to the database.

Here’s an example of how to update a record in CakePHP:

Controller action:

public function edit($id)
{
    $post = $this->Posts->get($id);

    if ($this->request->is(['post', 'put'])) {
        $post = $this->Posts->patchEntity($post, $this->request->getData());
        if ($this->Posts->save($post)) {
            $this->Flash->success(__('The post has been updated.'));
            return $this->redirect(['action' => 'index']);
        }
        $this->Flash->error(__('The post could not be updated. Please, try again.'));
    }

    $this->set(compact('post'));
}

View template:

<?= $this->Form->create($post) ?>
    <?= $this->Form->control('title') ?>
    <?= $this->Form->control('body') ?>
    <?= $this->Form->button(__('Save')) ?>
<?= $this->Form->end() ?>

In this example, the edit action uses the patchEntity method of the ORM to update the $post entity with the data from the form submission. The save method is then used to save the updated entity back to the database.

For more information about using the ORM in CakePHP, you can refer to the documentation at https://book.cakephp.org/4/en/orm.html.