为什么我的checkbox的值在生产环境中一直保存为0?
Why is the value of my checkbox always saved as 0 in the production environment?
我在 cakephp 3.6 中有一个复选框
<div class="input checkbox required link-policy">
<input type="hidden" name="newsletter" value="0">
<input type="checkbox" name="newsletter" value="1">
</div>
然后在我的控制器中访问 post 值并将其保存到联系人 table
$newContact->newsletter = $this->request->getData()['newsletter'];
$contactsTable->save($newContact);
我有一个 table,其中有一列定义为 TINYINT
,如果客户已接受或不接受时事通讯,我想在其中存储 1 或 0
问题是,当我在本地使用我的 MariaDB 数据库服务器执行此操作时,它工作正常(如果客户选中了复选框,则为 1,否则为 0),但在生产中它始终保存为 0。
如果我在 chrome 开发工具中看到 prod 中的 post 请求在请求中包含时事通讯 0 和时事通讯 1。
那么问题是复选框的定义?
谢谢
CakePHP 的 ORM 只会保存那些存在于缓存模式中的列,如果您在添加新字段后不清除缓存,那么该列将不会出现在生成的 INSERT INTO ...
( UPDATE ...
)查询。
然后,您将以插入列的默认值(在您的情况下为 0
)结束,或者如果该列未配置默认值,您将收到错误消息。
因此,每当您对数据库进行更改(例如添加新列)时,请确保之后通过手动删除临时数据文件夹中的文件来清除 model/schema 缓存:
tmp/cache/models
使用 schema cache shell/command(特定于数据库连接):
bin/cake schema_cache clear
或使用 cache shell/command(特定于缓存配置):
bin/cake cache clear _cake_model_
我在 cakephp 3.6 中有一个复选框
<div class="input checkbox required link-policy">
<input type="hidden" name="newsletter" value="0">
<input type="checkbox" name="newsletter" value="1">
</div>
然后在我的控制器中访问 post 值并将其保存到联系人 table
$newContact->newsletter = $this->request->getData()['newsletter'];
$contactsTable->save($newContact);
我有一个 table,其中有一列定义为 TINYINT
,如果客户已接受或不接受时事通讯,我想在其中存储 1 或 0
问题是,当我在本地使用我的 MariaDB 数据库服务器执行此操作时,它工作正常(如果客户选中了复选框,则为 1,否则为 0),但在生产中它始终保存为 0。
如果我在 chrome 开发工具中看到 prod 中的 post 请求在请求中包含时事通讯 0 和时事通讯 1。
那么问题是复选框的定义?
谢谢
CakePHP 的 ORM 只会保存那些存在于缓存模式中的列,如果您在添加新字段后不清除缓存,那么该列将不会出现在生成的 INSERT INTO ...
( UPDATE ...
)查询。
然后,您将以插入列的默认值(在您的情况下为 0
)结束,或者如果该列未配置默认值,您将收到错误消息。
因此,每当您对数据库进行更改(例如添加新列)时,请确保之后通过手动删除临时数据文件夹中的文件来清除 model/schema 缓存:
tmp/cache/models
使用 schema cache shell/command(特定于数据库连接):
bin/cake schema_cache clear
或使用 cache shell/command(特定于缓存配置):
bin/cake cache clear _cake_model_