CakePHP - Usuń rekord

Aby usunąć rekord w bazie danych, musimy najpierw zdobyć tabelę za pomocą TableRegistryklasa. Możemy pobrać instancję z rejestru za pomocą rozszerzeniaget()metoda. Metoda get () przyjmie nazwę tabeli bazy danych jako argument. Teraz ta nowa instancja jest używana do uzyskania konkretnego rekordu, który chcemy usunąć.

Zadzwoń do get()z tą nową instancją i przekaż klucz podstawowy, aby znaleźć rekord, który zostanie zapisany w innej instancji. Użyj instancji klasy TableRegistry, aby wywołać metodędelete metoda usuwania rekordu z bazy danych.

Przykład

Wprowadź zmiany w pliku config / tours.php, jak pokazano w poniższym kodzie.

config / tours.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();
});

Stwórz UsersController.php plik w src/Controller/UsersController.php. Skopiuj następujący kod w pliku kontrolera.

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');
      }
   }
?>

Po prostu stwórz pusty View plik w ramach Users katalog o nazwie delete.ctp.

src / Template / Users / delete.ctp

Utwórz katalog Users w src/Template, zignoruj, jeśli już został utworzony, i w tym katalogu utwórz plik Viewplik o nazwie index.ctp. Skopiuj następujący kod w tym pliku.

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>

Wykonaj powyższy przykład, odwiedzając następujący adres URL i kliknij Delete link aby usunąć rekord.

http: // localhost: 85 / CakePHP / users

Wynik

Po odwiedzeniu powyższego adresu URL i kliknięciu linku Usuń, otrzymasz następujące dane wyjściowe, w których możesz usunąć rekord.

Kliknij łącze Usuń, aby usunąć rekord.