CakePHP - Trabajar con base de datos

Trabajar con una base de datos en CakePHP es muy fácil. Entenderemos las operaciones CRUD (Crear, Leer, Actualizar, Eliminar) en este capítulo.

Además, también necesitamos configurar nuestra base de datos en 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 conexión predeterminada tiene los siguientes detalles:

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

Puede cambiar los detalles, es decir, host, nombre de usuario, contraseña y base de datos según su elección.

Una vez hecho esto, asegúrese de que esté actualizado en config / app_local.php en el objeto Datasources.

Ahora, continuaremos con los detalles anteriores, vaya a su base de datos phpmyadmin o mysql y cree el usuario my_app como se muestra a continuación:

Otorgue los privilegios necesarios y guárdelo. Ahora, tenemos los detalles de la base de datos según la configuración mencionada en app_local.php. Cuando revisa la página de inicio de CakePHP, esto es lo que debe obtener:

Ahora, crearemos la siguiente tabla de usuarios en la base de datos.

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

Insertar un registro

Para insertar un registro en la base de datos, primero necesitamos obtener una tabla usando TableRegistryclase. Podemos sacar la instancia del registro usandoget()método. losget() El método tomará el nombre de la tabla de la base de datos como argumento.

Esta nueva instancia se utiliza para crear una nueva entidad. Establezca los valores necesarios con la instancia de nueva entidad. Ahora tenemos que llamar alsave() método con TableRegistry instancia de la clase que insertará un nuevo registro en la base de datos.

Ejemplo

Realice cambios en el config/routes.php archivo como se muestra en el siguiente programa.

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

Crear un UsersController.php archivar en src/Controller/UsersController.php. Copie el siguiente código en el archivo del controlador.

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

Crea un directorio Users a src/Template y debajo de ese directorio crea un Viewarchivo llamado add.php. Copie el siguiente código en ese archivo.

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

Ejecute el ejemplo anterior visitando la siguiente URL. http: // localhost / cakephp4 / users / add

Salida

Tras la ejecución, recibirá el siguiente resultado.

Los datos se guardarán en la tabla de usuarios como se muestra a continuación: