CakePHP - Elimina un record
Per eliminare un record nel database, dobbiamo prima ottenere una tabella utilizzando l'estensione TableRegistryclasse. Possiamo recuperare l'istanza dal registro utilizzando l'estensioneget()metodo. Il metodo get () prenderà il nome della tabella del database come argomento. Ora, questa nuova istanza viene utilizzata per ottenere un record particolare che vogliamo eliminare.
Chiama il get()con questa nuova istanza e passare la chiave primaria per trovare un record che verrà salvato in un'altra istanza. Usa l'istanza della classe TableRegistry per chiamare il filedelete metodo per eliminare il record dal database.
Esempio
Apporta le modifiche al file config / routes.php come mostrato nel codice seguente.
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();
});
Creare un UsersController.php file in src/Controller/UsersController.php. Copiare il codice seguente nel file del controller.
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');
}
}
?>
Basta creare un vuoto View file sotto Users directory chiamata delete.ctp.
src / Template / Users / delete.ctp
Crea una directory Users a src/Template, ignora se già creato e in quella directory crea un file Viewfile chiamato index.ctp. Copia il codice seguente in quel 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>
Eseguire l'esempio precedente visitando il seguente URL e fare clic su Delete link per eliminare il record.
http: // localhost: 85 / CakePHP / users
Produzione
Dopo aver visitato l'URL sopra e aver fatto clic sul collegamento Elimina, riceverai il seguente output in cui puoi eliminare il record.
Fare clic sul collegamento Elimina per eliminare il record.