> 백엔드 개발 > PHP 튜토리얼 > CakePHP 데이터베이스 작업

CakePHP 데이터베이스 작업

王林
풀어 주다: 2024-09-10 17:25:36
원래의
378명이 탐색했습니다.

CakePHP에서 데이터베이스 작업은 매우 쉽습니다. 이번 장에서는 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 이해하겠습니다.

또한 config/app_local.php 파일

에서 데이터베이스를 구성해야 합니다.
'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 사용자를 생성합니다. −

My App

꼭 필요한 권한을 부여하고 저장해 주세요. 이제 app_local.php에 언급된 구성에 따른 데이터베이스 세부 정보가 있습니다. CakePHP 홈페이지를 확인하시면 이런 내용이 나옵니다 -

App Local

이제 데이터베이스에 다음과 같은 사용자 테이블을 생성하겠습니다.

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() 메소드는 데이터베이스 테이블의 이름을 인수로 사용합니다.

이 새 인스턴스는 새 엔터티를 만드는 데 사용됩니다. 새 엔터티의 인스턴스로 필요한 값을 설정합니다. 이제 데이터베이스에 새 레코드를 삽입할 TableRegistry 클래스의 인스턴스와 함께 save() 메소드를 호출해야 합니다.

다음 프로그램과 같이 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();
});
로그인 후 복사

src/Controller/UsersController.php에서 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.";
      }
   }
}
?>
로그인 후 복사

src/TemplateUsers 디렉토리를 만들고 해당 디렉토리 아래에 add.php라는 View 파일을 만듭니다. 해당 파일에 다음 코드를 복사하세요.

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

출력

실행하면 다음과 같은 결과가 출력됩니다.

CakePHP 데이터베이스 작업

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

Show All

위 내용은 CakePHP 데이터베이스 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿