Учебники

CakePHP — Работа с базой данных

Работать с базой данных в CakePHP очень просто. Мы поймем операции CRUD (создание, чтение, обновление, удаление) в этой главе. Прежде чем мы продолжим, нам нужно создать следующую таблицу пользователей в базе данных.

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

Кроме того, нам также необходимо настроить нашу базу данных в файле config / app.php .

Вставить запись

Чтобы вставить запись в базу данных, нам сначала нужно получить таблицу, используя класс TableRegistry . Мы можем извлечь экземпляр из реестра, используя метод get () . Метод get () примет имя таблицы базы данных в качестве аргумента.

Этот новый экземпляр используется для создания нового объекта. Установите необходимые значения с экземпляром новой сущности. Теперь нам нужно вызвать метод save () с экземпляром класса TableRegistry , который вставит новую запись в базу данных.

пример

Внесите изменения в файл config / rout.php, как показано в следующей программе.

конфиг / routes.php

<?php
   use Cake\Core\Plugin;
   use Cake\Routing\RouteBuilder;
   use Cake\Routing\Router;

   Router::defaultRouteClass('DashedRoute');
   Router::scope('/', function (RouteBuilder $routes) {
      $routes->connect('/users/add', ['controller' => 'Users', 'action' => 'add']);
      $routes->fallbacks('DashedRoute');
   });
   Plugin::routes();

Создайте файл UsersController.php в src / Controller / UsersController.php . Скопируйте следующий код в файл контроллера.

SRC / контроллер / 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->data('username');
            $hashPswdObj = new DefaultPasswordHasher;
            $password = $hashPswdObj->hash($this->request->data('password'));
            $users_table = TableRegistry::get('users');
            $users = $users_table->newEntity();
            $users->username = $username;
            $users->password = $password;
         
            if($users_table->save($users))
            echo "User is added.";
         }
      }
   }
?>

Создайте каталог Users в src / Template и в этом каталоге создайте файл View с именем add.ctp . Скопируйте следующий код в этот файл.

SRC / Template / Users / add.ctp

<?php
   echo $this->Form->create("Users",array('url'=>'/users/add'));
   echo $this->Form->input('username');
   echo $this->Form->input('password');
   echo $this->Form->button('Submit');
   echo $this->Form->end();
?>

Выполните приведенный выше пример, посетив следующий URL.

HTTP: // локальный: 85 / CakePHP / пользователей / добавить

Выход

После выполнения вы получите следующий вывод.