CakePHP保存简介

96 阅读4分钟

CakePHP save

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');``

解释一下

  • 执行上述查询后,我们将得到以下结果,如屏幕截图所示。

CakePHP Save 1

这是一个向表中插入记录的简单方法,但让我们考虑一下,我们需要更新记录并做一些配置,如下所示。

现在我们需要在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运行这个脚本,看看输出结果;这里是我们用截图说明的上述实现的结果。

CakePHP Save 2

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

click on Edit Button

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

change the name and password of Tanya

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

reflection of the update command

CakePHP HABTM保存

  • 用CakePHP从HasAndBelongsToMany(HABTM)关系中保存信息并不是利用这种结构的最简单的部分。
  • 最根本的麻烦是,无论你是需要将现有的记录联系在一起(更新连接表中的通道)还是制作新的记录并与之合作(在模型的表和连接表中制作新的记录),HABTM信息的配置都不相似。

用关联保存

下面给出了在CakePHP中用关联保存的内容。

每当你保存一个元素时,你可以把一些或相关的物质作为一个整体来保存。当然,所有的第一层元素都会被保存。例如,保存一篇文章将刷新任何与文章的表格直接相连的污秽元素。

CakePHP提供给开发者的相关选项如下。

specifiedtablename>save(specified table name->save(entity, ['associated' => ['Comments'])。

在保存关联时,我们可以实现不同实体之间的嵌套关联,如下所示。

specifiedtablename>save(specified table name->save(entity, ['associated' => [specified column name])。

因此,通过这种方式,我们可以实现关联保存,而且CakePHP也为开发者提供了不同的关联。

总结

从上面的文章中,我们已经掌握了CakePHP保存的基本思想,并看到了CakePHP保存的表现和例子。此外,我们从这篇文章中看到了如何以及何时使用CakePHP的保存。