CakePHP - Löscht einen Datensatz
Um einen Datensatz in der Datenbank zu löschen, müssen wir zuerst eine Tabelle mit dem abrufen TableRegistryKlasse. Wir können die Instanz mit der aus der Registrierung abrufenget()Methode. Die Methode get () verwendet den Namen der Datenbanktabelle als Argument. Diese neue Instanz wird jetzt verwendet, um einen bestimmten Datensatz abzurufen, den wir löschen möchten.
Ruf den get()Methode mit dieser neuen Instanz und übergeben Sie den Primärschlüssel, um einen Datensatz zu finden, der in einer anderen Instanz gespeichert wird. Verwenden Sie die Instanz der TableRegistry-Klasse, um die aufzurufendelete Methode zum Löschen eines Datensatzes aus der Datenbank.
Beispiel
Nehmen Sie Änderungen in der Datei config / route.php vor, wie im folgenden Code gezeigt.
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();
});
Ein ... kreieren UsersController.php Datei bei src/Controller/UsersController.php. Kopieren Sie den folgenden Code in die Controller-Datei.
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');
}
}
?>
Erstellen Sie einfach eine leere View Datei unter Users Verzeichnis aufgerufen delete.ctp.
src / Template / Users / delete.ctp
Erstellen Sie ein Verzeichnis Users beim src/Template, ignorieren, wenn bereits erstellt, und unter diesem Verzeichnis erstellen Sie eine ViewDatei aufgerufen index.ctp. Kopieren Sie den folgenden Code in diese Datei.
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>
Führen Sie das obige Beispiel aus, indem Sie die folgende URL aufrufen und auf klicken Delete link Datensatz löschen.
http: // localhost: 85 / CakePHP / users
Ausgabe
Nachdem Sie die obige URL besucht und auf den Link Löschen geklickt haben, erhalten Sie die folgende Ausgabe, in der Sie den Datensatz löschen können.
Klicken Sie auf den Link Löschen, um den Datensatz zu löschen.