Maison  >  Article  >  développement back-end  >  CakePHP Supprimer un enregistrement

CakePHP Supprimer un enregistrement

WBOY
WBOYoriginal
2024-09-10 17:25:58592parcourir

Pour supprimer un enregistrement dans la base de données, nous devons d'abord mettre la main sur une table en utilisant la classe TableRegistry. Nous pouvons récupérer l'instance hors du registre en utilisant la méthode get(). La méthode get() prendra le nom de la table de la base de données comme argument. Désormais, cette nouvelle instance est utilisée pour obtenir un enregistrement particulier que nous souhaitons supprimer.

Appelez la méthode get() avec cette nouvelle instance et passez la clé primaire pour trouver un enregistrement qui sera enregistré dans une autre instance. Utilisez l'instance de la classe TableRegistry pour appeler la méthode delete pour supprimer l'enregistrement de la base de données.

Exemple

Apportez des modifications au fichier config/routes.php comme indiqué dans le code suivant.

config/routes.php

<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$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();
});

Créez un fichier UsersController.php dans src/Controller/UsersController.php. Copiez le code suivant dans le fichier du contrôleur.

src/controller/UsersController.php

<?php
   namespace App\Controller;
   use App\Controller\AppController;
   use Cake\ORM\TableRegistry;
   use Cake\Datasource\ConnectionManager;
   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');
      }
   }
?>

Créez simplement un fichier View vide dans le répertoire Utilisateurs appelé delete.ctp.

src/Template/Users/delete.ctp

Créez un répertoire Utilisateurs dans src/Template, ignorez s'il est déjà créé, et sous ce répertoire, créez un fichier View appelé index.ctp . Copiez le code suivant dans ce fichier.

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>

Exécutez l'exemple ci-dessus en visitant l'URL suivante et cliquez sur Supprimer le lien pour supprimer l'enregistrement.

http://localhost:85/CakePHP/users

Sortie

Après avoir visité l'URL ci-dessus et cliqué sur le lien Supprimer, vous recevrez le résultat suivant dans lequel vous pourrez supprimer l'enregistrement.

Delete Link

Cliquez sur le lien Supprimer pour supprimer l'enregistrement.

User Deleted

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn