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 사용자를 생성합니다. −
꼭 필요한 권한을 부여하고 저장해 주세요. 이제 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() 메소드는 데이터베이스 테이블의 이름을 인수로 사용합니다.
이 새 인스턴스는 새 엔터티를 만드는 데 사용됩니다. 새 엔터티의 인스턴스로 필요한 값을 설정합니다. 이제 데이터베이스에 새 레코드를 삽입할 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/Template에 Users 디렉토리를 만들고 해당 디렉토리 아래에 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 데이터베이스 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!