Maison  >  Article  >  développement back-end  >  CakePHP travaillant avec la base de données

CakePHP travaillant avec la base de données

王林
王林original
2024-09-10 17:25:36324parcourir

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',
   ],
],

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

'host' => 'localhost',
   'username' => 'my_app',
   'password' => 'secret',
   'database' => 'my_app',

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

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();
});

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.";
      }
   }
}
?>

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();
?>

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!

Déclaration:
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
Article précédent:CakePHP Voir les événementsArticle suivant:CakePHP Voir les événements