CakePHP - Eliminar un registro
Para eliminar un registro en la base de datos, primero necesitamos obtener una tabla usando el TableRegistryclase. Podemos sacar la instancia del registro usando elget()método. El método get () tomará el nombre de la tabla de la base de datos como argumento. Ahora, esta nueva instancia se usa para obtener un registro particular que queremos eliminar.
Llama a get()con esta nueva instancia y pase la clave principal para encontrar un registro que se guardará en otra instancia. Utilice la instancia de la clase TableRegistry para llamar aldelete método para eliminar el registro de la base de datos.
Ejemplo
Realice cambios en el archivo config / routes.php como se muestra en el siguiente código.
config / route.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();
});
Crear un UsersController.php archivar en src/Controller/UsersController.php. Copie el siguiente código en el archivo del controlador.
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');
}
}
?>
Solo crea un vacío View archivar bajo Users directorio llamado delete.ctp.
src / Template / Users / delete.ctp
Crea un directorio Users a src/Template, ignore si ya está creado, y en ese directorio cree un Viewarchivo llamado index.ctp. Copie el siguiente código en ese archivo.
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>
Ejecute el ejemplo anterior visitando la siguiente URL y haga clic en Delete link para borrar el registro.
http: // localhost: 85 / CakePHP / users
Salida
Después de visitar la URL anterior y hacer clic en el enlace Eliminar, recibirá el siguiente resultado donde puede eliminar el registro.
Haga clic en el enlace Eliminar para eliminar el registro.