CakePHP - Làm việc với Cơ sở dữ liệu

Làm việc với cơ sở dữ liệu trong CakePHP rất dễ dàng. Chúng ta sẽ hiểu các thao tác CRUD (Tạo, Đọc, Cập nhật, Xóa) trong chương này.

Hơn nữa, chúng tôi cũng cần định cấu hình cơ sở dữ liệu của mình trong 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',
   ],
],

Kết nối mặc định có các chi tiết sau:

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

Bạn có thể thay đổi các chi tiết, tức là máy chủ, tên người dùng, mật khẩu và cơ sở dữ liệu theo sự lựa chọn của bạn.

Sau khi hoàn tất, hãy đảm bảo rằng nó được cập nhật trong config / app_local.php trong đối tượng Datasources.

Bây giờ, chúng ta sẽ tiếp tục với các chi tiết trên, hãy truy cập cơ sở dữ liệu phpmyadmin hoặc mysql của bạn và tạo người dùng my_app như được hiển thị bên dưới -

Cung cấp các đặc quyền cần thiết và lưu nó. Bây giờ, chúng tôi có các chi tiết cơ sở dữ liệu theo cấu hình được đề cập trong app_local.php. Khi bạn kiểm tra trang chủ CakePHP, đây là những gì bạn sẽ nhận được -

Bây giờ, chúng ta sẽ tạo bảng những người dùng sau trong cơ sở dữ liệu.

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

Chèn bản ghi

Để chèn một bản ghi vào cơ sở dữ liệu, trước tiên chúng ta cần nắm giữ một bảng bằng cách sử dụng TableRegistrylớp học. Chúng tôi có thể tìm nạp phiên bản từ sổ đăng ký bằng cách sử dụngget()phương pháp. Cácget() phương thức sẽ lấy tên của bảng cơ sở dữ liệu làm đối số.

Phiên bản mới này được sử dụng để tạo thực thể mới. Đặt các giá trị cần thiết với phiên bản của thực thể mới. Bây giờ chúng ta phải gọisave() phương pháp với TableRegistry thể hiện của lớp sẽ chèn bản ghi mới vào cơ sở dữ liệu.

Thí dụ

Thực hiện các thay đổi trong config/routes.php như được hiển thị trong chương trình sau đây.

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

Tạo một UsersController.php nộp tại src/Controller/UsersController.php. Sao chép mã sau vào tệp bộ điều khiển.

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

Tạo một thư mục Users tại src/Template và trong thư mục đó tạo một Viewtệp có tên add.php. Sao chép mã sau vào tệp đó.

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

Thực hiện ví dụ trên bằng cách truy cập URL sau. http: // localhost / cakephp4 / users / add

Đầu ra

Sau khi thực hiện, bạn sẽ nhận được kết quả sau.

Dữ liệu sẽ được lưu trong bảng người dùng như hình dưới đây -