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
输出
执行以上程序,您会看到如下页面。
