CakePHP – Delete a Record


CakePHP – Delete a Record


”;


To delete a record in database, we first need to get hold of a table using the 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 delete.

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 the TableRegistry class’s instance to call the delete method to delete record from database.

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/delete'', [''controller'' => ''Users'', ''action'' => ''delete'']);
   $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{
      public function index(){
         $users = TableRegistry::get(''users'');
         $query = $users->find();
         $this->set(''results'',$query);
      }
      public function delete($id){
         $users_table = TableRegistry::get(''users'');
         $users = $users_table->get($id);
         $users_table->delete($users);
         echo "User deleted successfully.";
         $this->setAction(''index'');
      }
   }
?>

Just create an empty View file under Users directory called delete.ctp.

src/Template/Users/delete.ctp

Create a directory Users at src/Template, ignore if already created, and under that directory create a Viewfile called index.ctp. Copy the following code in that file.

src/Template/Users/index.ctp

<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>

Execute the above example by visiting the following URL and click on Delete link to delete record.

http://localhost:85/CakePHP/users

Output

After visiting the above URL and clicking on the Delete link, you will receive the following output where you can delete record.

Delete Link

Click on Delete link to delete the record.

User Deleted

Advertisements

”;

Leave a Reply

Your email address will not be published. Required fields are marked *