CakePHP的使用数据库
在CakePHP中使用数据库是很容易的。我们将在本章节了解CRUD(创建,读取,更新,删除)操作。在开始之前,我们需要在数据库中创建以下users表。
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
此外,我们还需要在config/app.php文件中配置数据库。
插入一条记录
要在数据库中插入一条记录,首先,我们需要使用TableRegistry类获得一个表(table)。我们可以用TableRegistry类的get()方法获取表的实例。get()方法将表名作为参数。
用get()方法取得的实例创建实体。为实体设置必要的值。然后,调用该实例的save()方法在数据库中插入记录。
例
在以下项目中修改config/routes.php。
config/routes.php文件
<?php use CakeCorePlugin; use CakeRoutingRouteBuilder; use CakeRoutingRouter; Router::defaultRouteClass('DashedRoute'); Router::scope('/', function (RouteBuilder $routes) { $routes->connect('/users/add', ['controller' => 'Users', 'action' => 'add']); $routes->fallbacks('DashedRoute'); }); Plugin::routes();
在src/Controller/目录下创建一个UsersController.php文件。复制以下代码至其中。
src/Controller/UsersController.php
<?php namespace AppController; use AppControllerAppController; use CakeORMTableRegistry; use CakeDatasourceConnectionManager; use CakeAuthDefaultPasswordHasher; class UsersController extends AppController{ public function add(){ if($this->request->is('post')){ $username = $this->request->data('username'); $hashPswdObj = new DefaultPasswordHasher; $password = $hashPswdObj->hash($this->request->data('password')); $users_table = TableRegistry::get('users'); $users = $users_table->newEntity(); $users->username = $username; $users->password = $password; if($users_table->save($users)) echo "User is added."; } } } ?>
在src/Template目录下创建一个Users目录下,并在Users目录下创建一个名为add.ctp的视图文件。复制以下代码至其中。
src/Template/Users/add.ctp
<?php echo $this->Form->create("Users",array('url'=>'/users/add')); echo $this->Form->input('username'); echo $this->Form->input('password'); echo $this->Form->button('Submit'); echo $this->Form->end(); ?>
通过访问以下网址执行上面的例子。
http://localhost:85/CakePHP/users/add
输出
执行以上程序,您会看到如下页面。
更多建议: