要更新数据库中的记录,我们首先需要使用 TableRegistry 类获取表。我们可以使用 get() 方法从注册表中获取实例。 get() 方法将以数据库表的名称作为参数。现在,这个新实例用于获取我们想要更新的特定记录。
使用这个新实例调用get()方法,并传递主键来查找记录,该记录将保存在另一个实例中。使用此实例来设置要更新的新值,然后最后使用 TableRegistry 类的实例调用 save() 方法来更新记录。
在 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/edit', ['controller' => 'Users', 'action' => 'edit']); $builder->fallbacks(); });
在 src/Controller/UsersController.php 创建一个 UsersController.php 文件。 将以下代码复制到控制器文件中。
<?php namespace App\Controller; use App\Controller\AppController; use Cake\ORM\TableRegistry; use Cake\Datasource\ConnectionManager; class UsersController extends AppController{ public function index(){ $users = TableRegistry::get('users'); $query = $users->find(); $this->set('results',$query); } public function edit($id){ if($this->request->is('post')){ $username = $this->request->getData('username'); $password = $this->request->getData('password'); $users_table = TableRegistry::get('users'); $users = $users_table->get($id); $users->username = $username; $users->password = $password; if($users_table->save($users)) echo "User is udpated"; $this->setAction('index'); } else { $users_table = TableRegistry::get('users')->find(); $users = $users_table->where(['id'=>$id])->first(); $this->set('username',$users->username); $this->set('password',$users->password); $this->set('id',$id); } } } ?>
创建一个目录Users at src/Template,如果已经创建则忽略,并在该目录下创建一个名为index.php的视图。将以下代码复制到该文件中。
<a href="add">Add User</a>
ID | Username | Password | Edit | Delete | ".$row->id." | "; echo "".$row->username." | "; echo "".$row->password." | "; echo "Edit | "; echo "Delete | "; endforeach; ?>
在 Users 目录下创建另一个 View 文件,名为 edit.php 并将以下代码复制到其中。
<?php echo $this->Form->create(NULL,array('url'=>'/users/edit/'.$id)); echo $this->Form->control('username',['value'=>$username]); echo $this->Form->control('password',['value'=>$password]); echo $this->Form->button('Submit'); echo $this->Form->end(); ?>
通过访问以下 URL 来执行上述示例,然后单击编辑链接来编辑记录。
http://localhost/cakephp4/users
访问上述网址后,会显示users表中的记录如下 -
点击编辑按钮,它将显示以下屏幕 -
现在,我们将把名称 CakePHP 更新一条记录 更新为 CakePHP 更新一条记录123 并提交详细信息。显示的下一个屏幕如下 -
以上是CakePHP 更新一条记录的详细内容。更多信息请关注PHP中文网其他相关文章!