CakePHP travaillant avec la base de données

王林
Libérer: 2024-09-10 17:25:36
original
293 Les gens l'ont consulté

Travailler avec une base de données dans CakePHP est très simple. Nous comprendrons les opérations CRUD (Créer, Lire, Mettre à jour, Supprimer) dans ce chapitre.

De plus, nous devons également configurer notre base de données dans le fichier config/app_local.php.

'Datasources' => [
   'default' => [
      'host' => 'localhost',
      'username' => 'my_app',
      'password' => 'secret',
      'database' => 'my_app',
      'url' => env('DATABASE_URL', null),
   ],
   /*
      * The test connection is used during the test suite.
   */
   'test' => [
      'host' => 'localhost',
      //'port' => 'non_standard_port_number',
      'username' => 'my_app',
      'password' => 'secret',
      'database' => 'test_myapp',
      //'schema' => 'myapp',
   ],
],
Copier après la connexion

La connexion par défaut a les détails suivants −

'host' => 'localhost',
   'username' => 'my_app',
   'password' => 'secret',
   'database' => 'my_app',
Copier après la connexion

Vous pouvez modifier les détails, c'est-à-dire l'hôte, le nom d'utilisateur, le mot de passe et la base de données selon votre choix.

Une fois terminé, assurez-vous qu'il est mis à jour dans config/app_local.php dans l'objet Datasources.

Maintenant, nous allons continuer avec les détails ci-dessus, accédez à votre base de données phpmyadmin ou mysql et créez l'utilisateur my_app comme indiqué ci-dessous −

My App

Donnez les privilèges nécessaires et enregistrez-le. Maintenant, nous avons les détails de la base de données selon la configuration mentionnée dans app_local.php. Lorsque vous consultez la page d'accueil de CakePHP, voici ce que vous devriez obtenir −

App Local

Maintenant, nous allons créer la table des utilisateurs suivante dans la base de données.

CREATE TABLE `users` ( 
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `username` varchar(50) NOT NULL, 
   `password` varchar(255) NOT NULL, PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1
Copier après la connexion

Insérer un enregistrement

Pour insérer un enregistrement dans la base de données, nous devons d'abord nous procurer 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.

Cette nouvelle instance est utilisée pour créer une nouvelle entité. Définissez les valeurs nécessaires avec l’instance de la nouvelle entité. Nous devons maintenant appeler la méthode save() avec l'instance de la classe TableRegistry qui insérera un nouvel enregistrement dans la base de données.

Exemple

Apportez des modifications au fichier config/routes.php comme indiqué dans le programme 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/add', ['controller' => 'Users', 'action' => 'add']);
   $builder->fallbacks();
});
Copier après la connexion

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;
use Cake\Auth\DefaultPasswordHasher;
class UsersController extends AppController{
   public function add(){
      if($this->request->is('post')){
         $username = $this->request->getData('username');
         $hashPswdObj = new DefaultPasswordHasher;
         $password = $hashPswdObj->hash($this->request->getData('password'));
         $users_table = TableRegistry::get('users');
         $users = $users_table->newEntity($this->request->getData());
         $users->username = $username;
         $users->password = $password;
         $this->set('users', $users);
         if($users_table->save($users))
         echo "User is added.";
      }
   }
}
?>
Copier après la connexion

Créez un répertoire Utilisateurs dans src/Template et sous ce répertoire, créez un fichier View appelé add.php. Copiez le code suivant dans ce fichier.

src/Template/Users/add.php

<?php echo $this->Form->create(NULL,array('url'=>'/users/add'));
   echo $this->Form->control('username');
   echo $this->Form->control('password');
   echo $this->Form->button('Submit');
   echo $this->Form->end();
?>
Copier après la connexion

Exécutez l'exemple ci-dessus en visitant l'URL suivante. http://localhost/cakephp4/users/add

Sortie

Lors de l'exécution, vous recevrez le résultat suivant.

CakePHP travaillant avec la base de données

Les données seront enregistrées dans le tableau des utilisateurs comme indiqué ci-dessous −

Show All

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!

Étiquettes associées:
source:php
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!