如果我尝试声明属性,像这样:
public $quantity = 9;
Run Code Online (Sandbox Code Playgroud)
...它不起作用,因为它不被视为"属性",而仅仅是模型类的属性.不仅如此,我还阻止访问实际存在的"数量"属性.
那我该怎么办?
我需要在类文件中获取默认值
private $example_field = 0;
Run Code Online (Sandbox Code Playgroud)
当我用这个
example_field:
options:
default: 0
Run Code Online (Sandbox Code Playgroud)
我有默认的数据库值,但是当我试图坚持而没有设置"su"时我得到了错误(列'su'不能为null).
无论如何,
example_field:
default: 0
Run Code Online (Sandbox Code Playgroud)
什么也没做.
对于一些背景知识,我们使用Zend Framework 2和Doctrine.Doctrine将始终插入NULL
我们自己不填充的值.通常这可以,就好像字段有默认值,然后它应该使用此默认值填充字段.
对于我们运行MySQL 5.6.16的服务器之一,下面的查询运行并执行正常.虽然NULL
被插入到不可为空的字段中,但MySQL会在插入时使用其默认值填充该字段.
在我们运行MySQL 5.6.20的另一台服务器上,我们运行下面的查询,它会因为抱怨'field_with_default_value'不能为空而失败.
INSERT INTO table_name(id, field, field_with_default_value)
VALUES(id_value, field_value, NULL);
Run Code Online (Sandbox Code Playgroud)
Doctrine本身不支持将"DEFAULT"传递给它构建的查询,因此这不是一个选项.我认为这必须是一个MySQL服务器的东西,看起来好像它在一个版本但不是另一个版本中工作正常,但不幸的是我不知道这可能是什么.我们的SQL模式在两个服务器上都是相同的('NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
).
我应该提一下,如果我实际在Workbench中运行上面的SQL,它仍然无法以相同的方式工作.所以这不是一个真正的Doctrine问题,但绝对是某种类型的MySQL问题.
任何有关这方面的帮助将不胜感激.