ホームページ > バックエンド開発 > 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/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 データベースの操作

データは以下に示すように users テーブルに保存されます -

Show All

以上がCakePHP データベースの操作の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート