cakephp 更新記錄
要更新數(shù)據(jù)庫中的記錄,我們首先需要使用 tableregistry 類來獲取一個表。我們可以使用 get() 方法從注冊表中獲取實例。 get() 方法將數(shù)據(jù)庫表的名稱作為參數(shù)。現(xiàn)在,這個新實例用于獲取我們想要更新的特定記錄。
使用這個新實例調(diào)用 get() 方法,并傳遞主鍵以查找記錄,該記錄將保存在另一個實例中。使用此實例設(shè)置您要更新的新值,然后最后使用 tableregistry 類的實例調(diào)用 save() 方法來更新記錄。
示例
在 config/routes.php 文件中進行更改,如以下代碼所示。
config/routes.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 創(chuàng)建一個 userscontroller.php 文件/userscontroller.php。 將以下代碼復(fù)制到控制器文件中。
src/controller/userscontroller.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); } } } ?>
創(chuàng)建一個目錄 users at src/template, 如果已經(jīng)創(chuàng)建,則忽略,并在該目錄下創(chuàng)建一個名為 index.php 的視圖。 在該文件中復(fù)制以下代碼.
src/template/users/index.php
add user "; echo ""; echo ""; echo ""; echo ""; endforeach; ?><table class="ke-zeroborder"> <tbody><tr> <td>id</td> <td>username</td> <td>password</td> <td>edit</td> <td>delete</td> </tr> foreach ($results as $row): echo "<tr--><tr><td>".$row->id."</td> <td>".$row->username."</td> <td>".$row->password."</td> <td>edit</td> <td>delete</td> </tr> </tbody> </table>
在用戶目錄下創(chuàng)建另一個名為 edit.php 的 view 文件,并將以下代碼復(fù)制到其中。
src/template/users/edit.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 執(zhí)行上述示例,然后單擊 編輯鏈接以編輯記錄。
http://localhost/cakephp4/users
輸出
訪問上述 url 后,它將顯示用戶表中的記錄,如下所示:

單擊"編輯"按鈕,它將顯示以下屏幕:

現(xiàn)在,我們將名稱 virat 更新為 virat123 并提交詳細信息。下一個屏幕顯示如下:

- CodeIgniter 教程
- CodeIgniter 應(yīng)用程序架構(gòu)
- CodeIgniter 配置
- CodeIgniter 文件上傳
- CodeIgniter 國際化
- CodeIgniter 安全
- CakePHP 安裝
- CakePHP 控制器
- CakePHP 國際化
- CakePHP 文件上傳
- FuelPHP 模型和數(shù)據(jù)庫
- FuelPHP HMVC 請求
- Laravel 安裝
- Laravel 應(yīng)用程序結(jié)構(gòu)
- Laravel 路由
- Laravel 命名空間
- Laravel 控制器
- Laravel視圖
- Laravel 表單
- Laravel 事件處理