【问题标题】:cakephp 3: bake adds undesired rule "$rules->isUnique(['email'])"cakephp 3: bake 添加了不需要的规则 "$rules->isUn​​ique(['email'])"
【发布时间】:2018-08-29 07:07:22
【问题描述】:

我正在烘焙一个表,它保存了我的客户的所有登录尝试,并且由于某种原因,烘焙命令添加了此规则。

$rules->isUnique(['email'])

这是不受欢迎的,因为我想保存在每次登录尝试期间发送的所有数据。

当我尝试使用同一封电子邮件保存许多记录时,我花了一段时间才找到错误的原因。在我的数据库中,该字段未标记为唯一,但 bake 决定应用该规则。问题是这是否是一个错误,或者是否有一种设计方法可以避免这种不良行为。

【问题讨论】:

  • 我认为这是决定使所有“电子邮件”字段唯一的行 [github.com/cakephp/bake/blob/…
  • 换句话说 - 当字段被命名为email 时,它总是会添加这个约束。您可以将该名称更改为uemail,一切都会按您的预期进行,或者在烘焙后删除约束。
  • 从代码的外观来看,这似乎是预期的行为。烘焙代码旨在加快开发速度,但没有什么可以阻止您在之后修改生成的代码以使其按需要工作。正如@Antoniossss 所说,只需在烘烤后删除规则。

标签: cakephp cakephp-3.x cakephp-bake


【解决方案1】:

这种为恰好具有名称email 的字段添加$rules->isUnique() 的烘焙行为是一项“功能”。 (但是当您希望电子邮件是唯一的时,这很烦人。)

恭喜您找到了问题!

最好的解决方案是在XXXsTable.php 文件中注释掉有问题的代码行 - 或者如果您确定永远不需要它,只需删除该行。

将字段名称更改为不同于email 的名称可能不是一个好主意,因为您选择该名称可能有充分的理由。

请记住,bake 创建的所有文件只是一个起点,您可能需要对它们进行大量编辑才能实现您的应用程序。

【讨论】:

  • 感谢您的洞察力,我认为 bake 确实是一个很棒的工具,现在我明白目标是更容易地启动样板而不是所有可能情况的专家系统,谢谢!
猜你喜欢
  • 2021-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多