
CakePHP保存简介
CakePHP是一个实现动态编程的开源工具;在CakePHP中有多种方法来保存记录。我们也可以向表中添加新的记录。我们试图在那个时候更新记录;我们也需要根据我们的要求执行保存操作。一个重要的事情是,我们可以说在现有的应用程序中常见的错误是,继承的代码意味着当我们有一个以上的关系。我们试图保存记录,所以这个错误可以通过使用多种方法来解决,这取决于开发人员。
CakePHP保存的概述
我们在对现有的应用程序进行代码审查时,或者仅仅是在处理获得的代码时,发现的一个正常的失误是如何保存HasMany关系信息。我们看到,为了保存HasMany关系;少数设计者会保存目标连接。之后,当ID在保存之后被恢复时,他们为每个人和所有的 "多 "连接保存一个。没有令人信服的理由这样做,因为CakePHP可以在一个单一的 "保存 "中做到这一点!你不会有任何信息冲突的问题,因为所有的信息都会在一次交换中被收起来,而且你的代码看起来会更加一尘不染。
在保存操作之前,我们需要在一个有表注册表的表类上下功夫。我们可以利用get()技术从保险库中获取场合。get()技术将把信息库表的名称作为一个争论点。利用这个新的情况,可以得到我们需要刷新的特定记录。接下来,我们必须执行保存操作,如在多个案例中进行级联。利用这个例子来设置你需要刷新的新品质,之后,最后用TableRegistry类的发生调用save()策略来刷新记录。
如何在CakePHP中保存数据?
现在让我们看看如何在CakePHP中保存数据,如下。
首先,我们需要创建一个新的表,并将一些记录放入表中,如下所示。
代码
``CREATE TABLE IF NOT EXISTS `sampledemo` ( `id` char(30) NOT NULL, `EmpName` varchar(250) DEFAULT NULL, `EmpPass` varchar(40) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;``
现在在新创建的表中插入记录,如下所示:
代码
``INSERT INTO `sampledemo` (`id`, `EmpName`, `EmpPass`) VALUES ('3', 'Siya','$2y$10$HKLH3YiZE'), ('4', 'Rohan','$2y$10$bZcoCTW'), ('5', 'Tanya','$2y$10$SnGQV8O');``
解释一下
- 执行上述查询后,我们将得到以下结果,如屏幕截图所示。

这是一个向表中插入记录的简单方法,但让我们考虑一下,我们需要更新记录并做一些配置,如下所示。
现在我们需要在route.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('/users/delete', ['controller' => 'sam, 'action' => 'delete']); $builder->fallbacks(); });`
现在我们需要创建一个usercontroller.php文件并编写以下代码。
代码:
`?php namespace App\Controller; use App\Controller\AppController; use Cake\ORM\TableRegistry; use Cake\Datasource\ConnectionManager; class UsersController extends AppController{ public function sequence (){ $users = TableRegistry::get('users'); $query = $users->find(); $this->set('output',$query); } public function delete($id){ $users_table = TableRegistry::get('users'); $users = $users_table->get($id); $users_table->delete($users); echo "deleted successfully."; $this->setAction('sequence'); } } ?>`
现在我们需要为用户创建一个目录,这个文件我们称之为ctp文件,可以是序列,也可以是索引;根据我们的要求,我们可以改变文件的名称,并写下以下代码。
代码
`<a href="add"> User</a> <table> <tr> <td>Id</td> <td>EmpNamee</td> <td>EmpPass</td> <td>Edit</td> <td>Delete</td> </tr> <?php foreach ($Output as $row): echo "<tr><td>".$row->id."</td>"; echo "<td>".$row->Empname."</td>"; echo "<td>".$rows->EmpPass."</td>"; echo "<td><a href='".$this->Url->build(["controller" => "Users","action" => "edit",$row->id])."'>Edit</a></td>"; echo "<td><a href='".$this->Url->build(["controller" => "Users","action" => "delete",$row->id])."'>Delete</a></td></tr>"; endforeach; ?> </table>`
现在在localhost运行这个脚本,看看输出结果;这里是我们用截图说明的上述实现的结果。

现在点击编辑按钮;我们得到以下屏幕,如屏幕截图所示。

假设我们需要改变Tanya的名字和密码,那么我们需要点击编辑按钮,并输入所需的细节,如下面的截图所示。

现在点击保存按钮,看到更新命令在表中的反映;这里,我们用下面的截图来说明。

CakePHP HABTM保存
- 用CakePHP从HasAndBelongsToMany(HABTM)关系中保存信息并不是利用这种结构的最简单的部分。
- 最根本的麻烦是,无论你是需要将现有的记录联系在一起(更新连接表中的通道)还是制作新的记录并与之合作(在模型的表和连接表中制作新的记录),HABTM信息的配置都不相似。
用关联保存
下面给出了在CakePHP中用关联保存的内容。
每当你保存一个元素时,你可以把一些或相关的物质作为一个整体来保存。当然,所有的第一层元素都会被保存。例如,保存一篇文章将刷新任何与文章的表格直接相连的污秽元素。
CakePHP提供给开发者的相关选项如下。
entity, ['associated' => ['Comments'])。
在保存关联时,我们可以实现不同实体之间的嵌套关联,如下所示。
entity, ['associated' => [specified column name])。
因此,通过这种方式,我们可以实现关联保存,而且CakePHP也为开发者提供了不同的关联。
总结
从上面的文章中,我们已经掌握了CakePHP保存的基本思想,并看到了CakePHP保存的表现和例子。此外,我们从这篇文章中看到了如何以及何时使用CakePHP的保存。