CakePHP-데이터베이스 작업

CakePHP에서 데이터베이스로 작업하는 것은 매우 쉽습니다. 이 장에서는 CRUD (만들기, 읽기, 업데이트, 삭제) 작업을 이해합니다.

또한 데이터베이스를 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',
   ],
],

기본 연결에는 다음과 같은 세부 정보가 있습니다.

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

선택에 따라 호스트, 사용자 이름, 암호 및 데이터베이스와 같은 세부 정보를 변경할 수 있습니다.

완료되면 Datasources 개체의 config / app_local.php에서 업데이트되었는지 확인합니다.

이제 위의 세부 사항을 계속하고 phpmyadmin 또는 mysql 데이터베이스로 이동하여 아래와 같이 my_app 사용자를 만듭니다.

필요한 권한을 부여하고 저장하십시오. 이제 app_local.php에 언급 된 구성에 따른 데이터베이스 세부 정보가 있습니다. CakePHP 홈 페이지를 확인하면 다음과 같은 정보를 얻을 수 있습니다.

이제 데이터베이스에 다음 사용자 테이블을 생성합니다.

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

레코드 삽입

데이터베이스에 레코드를 삽입하려면 먼저 다음을 사용하여 테이블을 확보해야합니다. TableRegistry수업. 다음을 사용하여 레지스트리에서 인스턴스를 가져올 수 있습니다.get()방법. 그만큼get() 메소드는 데이터베이스 테이블의 이름을 인수로 사용합니다.

이 새 인스턴스는 새 항목을 만드는 데 사용됩니다. 새 엔티티의 인스턴스로 필요한 값을 설정하십시오. 이제 우리는save() 방법 TableRegistry 데이터베이스에 새 레코드를 삽입 할 클래스의 인스턴스입니다.

변경 config/routes.php 다음 프로그램과 같이 파일.

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

만들기 UsersController.php 파일 src/Controller/UsersController.php. 컨트롤러 파일에 다음 코드를 복사합니다.

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

디렉토리 생성 Users ...에서 src/Template 그 디렉토리 아래에 Viewadd.php라는 파일. 해당 파일에 다음 코드를 복사하십시오.

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

다음 URL을 방문하여 위의 예를 실행하십시오. http : // localhost / cakephp4 / users / add

산출

실행하면 다음 출력이 표시됩니다.

데이터는 아래와 같이 사용자 테이블에 저장됩니다.