Mysql 在cakephp中创建我自己的save命令

Mysql 在cakephp中创建我自己的save命令,mysql,cakephp,Mysql,Cakephp,众所周知,cakephp有默认的save命令,用于将记录插入数据库。 但是我想知道我可以用cakephp创建自己的save命令还是修改现有的命令。 我能做这个吗 你一定在问我为什么这么说?让我给你一个活生生的例子---- 假设我有一个文本框,其中包含用户输入的用户名。我不认为这是唯一的,因此多个用户将插入相同的用户名(可能…) 我的名字是prakash Gupta,用户名是“prakash”。还有其他用户的名字可以是prakash gupta,他们会提供相同的用户名 每个人的情况都不一样。 现在

众所周知,cakephp有默认的save命令,用于将记录插入数据库。 但是我想知道我可以用cakephp创建自己的save命令还是修改现有的命令。 我能做这个吗

你一定在问我为什么这么说?让我给你一个活生生的例子---- 假设我有一个文本框,其中包含用户输入的用户名。我不认为这是唯一的,因此多个用户将插入相同的用户名(可能…)

我的名字是prakash Gupta,用户名是“prakash”。还有其他用户的名字可以是prakash gupta,他们会提供相同的用户名 每个人的情况都不一样。 现在,“save”命令将获取我在文本框中输入的用户名并插入数据库,但我想将修改后的用户名插入我生成的数据库 通过随机函数。这可能吗???
如果是,请让我知道

通常,您不会更改标准的,而是添加另一个或使用beforeSave等挂钩

保存功能是模型的一部分。通常,您可以使用:行为来修改它们。请参阅:它们允许您修改模型、保存等,而无需将所有代码直接编码到您的模型中

根据您的编辑:

唯一约束

正如我看到的,您需要一个唯一的用户名。有多种解决方案。首先确保设置一个约束。甚至您的random()技巧也可能会生成重复,因为random也可以创建相同的。所以username.random(4)可以多次生成:username1234。你不能肯定

例如,应在模型级别设置约束。用CakePHP的验证开始这个独特的检查

您何时知道用户名已被使用

您将知道验证何时失败。因此,首先只需验证记录。因此,在保存调用model::validate()之前,请检查您的唯一约束是否正确。如果是,请保存。

如果没有,您可以添加随机字符串并再次检查。调用model::验证以查看它现在是否正常。例如,可以在beforeSave()方法中的行为中实现此部分

现在,您有了一个独特的方法来保存您的记录。确保检查它是否成功,因为在此期间可能添加了另一个具有该用户名的记录。在这种情况下,请重新运行流程

大量工作

这很难,因为在您还不知道的情况下,多个客户端可以在数据库中同时添加数据。最简单的方法是捕获错误,所以只需使用您的用户名调用save。如果由于您的唯一约束而失败,请添加random()字符串并重试。应该可以保存。在这里使用随机字符串的技巧,因为如果它很短并且经常使用用户名,您可能会遇到问题。如果您的随机字符串是3个数字,那么您可以拥有相同的用户名1000次,从000到999

其他选项

您有时会看到一些建议,界面会根据您的用户名输入建议一些免费名称。不过你还是需要支票

另一选项
只需告诉用户它正在使用中。也许可以添加一个ajax检查,这样您就可以通过验证字段立即显示结果。

好的,谢谢,但我对cakephp不太熟悉,对它没有太多的了解。五天前开始的。谢谢你的回应。