- CakePHP - Discussion
- CakePHP - Useful Resources
- CakePHP - Quick Guide
- CakePHP - File upload
- CakePHP - Date and Time
- CakePHP - Pagination
- CakePHP - Creating Validators
- CakePHP - Validation
- CakePHP - Security
- CakePHP - Cookie Management
- CakePHP - Session Management
- CakePHP - Internationalization
- CakePHP - Form Handling
- CakePHP - Logging
- CakePHP - Errors & Exception Handling
- CakePHP - Services
- CakePHP - Delete a Record
- CakePHP - Update a Record
- CakePHP - View a Record
- CakePHP - Working with Database
- CakePHP - View Events
- CakePHP - View Elements
- CakePHP - Extending Views
- CakePHP - Views
- CakePHP - Controllers
- CakePHP - Routing
- CakePHP - Project Configuration
- CakePHP - Folder Structure
- CakePHP - Installation
- CakePHP - Overview
- CakePHP - Home
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
CakePHP - Update a Record
To update a record in database, we first need to get hold of a table using TableRegistry class. We can fetch the instance out of registry using the get() method. The get() method will take the name of the database table as an argument. Now, this new instance is used to get particular record that we want to update.
Call the get() method with this new instance, and pass the primary key to find a record, which will be saved in another instance. Use this instance, to set new values that you want to update and then, finally call the save() method with the TableRegistry class’s instance to update record.
Example
Make changes in the config/routes.php file as shown in the following code.
config/routes.php
<?php use CakeHttpMiddlewareCsrfProtectionMiddleware; use CakeRoutingRouteDashedRoute; use CakeRoutingRouteBuilder; $routes->setRouteClass(DashedRoute::class); $routes->scope( / , function (RouteBuilder $builder) { $builder->registerMiddleware( csrf , new CsrfProtectionMiddleware([ httpOnly => true, ])); $builder->applyMiddleware( csrf ); //$builder->connect( /pages ,[ controller => Pages , action => display , home ]); $builder->connect( /users/edit , [ controller => Users , action => edit ]); $builder->fallbacks(); });
Create a UsersController.php file at src/Controller/UsersController.php. Copy the following code in the controller file.
src/controller/UsersController.php
<?php namespace AppController; use AppControllerAppController; use CakeORMTableRegistry; use CakeDatasourceConnectionManager; class UsersController extends AppController{ pubpc function index(){ $users = TableRegistry::get( users ); $query = $users->find(); $this->set( results ,$query); } pubpc function edit($id){ if($this->request->is( post )){ $username = $this->request->getData( username ); $password = $this->request->getData( password ); $users_table = TableRegistry::get( users ); $users = $users_table->get($id); $users->username = $username; $users->password = $password; if($users_table->save($users)) echo "User is udpated"; $this->setAction( index ); } else { $users_table = TableRegistry::get( users )->find(); $users = $users_table->where([ id =>$id])->first(); $this->set( username ,$users->username); $this->set( password ,$users->password); $this->set( id ,$id); } } } ?>
Create a directory Users at src/Template, ignore if already created, and under that directory create a view called index.php. Copy the following code in that file.
src/Template/Users/index.php
<a href="add">Add User</a> <table> <tr> <td>ID</td> <td>Username</td> <td>Password</td> <td>Edit</td> <td>Delete</td> </tr> <?php foreach ($results as $row): echo "<tr><td>".$row->id."</td>"; echo "<td>".$row->username."</td>"; echo "<td>".$row->password."</td>"; echo "<td><a href= ".$this->Url->build(["controller" => "Users","action" => "edit",$row->id])." >Edit</a></td>"; echo "<td><a href= ".$this->Url->build(["controller" => "Users","action" => "delete",$row->id])." >Delete</a></td></tr>"; endforeach; ?> </table>
Create another View file under the Users directory called edit.php and copy the following code in it.
src/Template/Users/edit.php
<?php echo $this->Form->create(NULL,array( url => /users/edit/ .$id)); echo $this->Form->control( username ,[ value =>$username]); echo $this->Form->control( password ,[ value =>$password]); echo $this->Form->button( Submit ); echo $this->Form->end(); ?>
Execute the above example by visiting the following URL and cpck on Edit pnk to edit record.
http://localhost/cakephp4/users
Output
After visiting the above URL, it will display the records in users table as shown below −
Cpck on Edit button and it will display you following screen −
Now, we will update the name Virat to Virat123 and submit the details. The next screen displayed will be as follows −
Advertisements