CakePHP - Travailler avec la base de données

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 config/app_local.php file.

'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éder à votre base de données phpmyadmin ou mysql et créer l'utilisateur my_app comme indiqué ci-dessous -

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 -

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 mettre la main sur une table en utilisant TableRegistryclasse. Nous pouvons extraire l'instance du registre en utilisantget()méthode. leget() La méthode 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 lesave() méthode avec TableRegistry l'instance de la classe qui insérera un nouvel enregistrement dans la base de données.

Exemple

Apportez des modifications au config/routes.php fichier 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éer un UsersController.php déposer à 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éer un annuaire Users à src/Template et sous ce répertoire, créez un Viewfichier 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

Production

Lors de l'exécution, vous recevrez la sortie suivante.

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