如何解决Symfony 订单表字段使用学说
我将 Symfony 4 与 Doctrine 一起使用。我试图创建一个具有表字段名称顺序的新实体。
class Item {
/**
* @var integer
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
protected $id;
/**
* @var int
* @ORM\Column(name="order",type="smallint",nullable=false)
* @Assert\NotBlank
* @Assert\GreaterThanOrEqual(value="1",message="validators.min_value")
*/
private $order;
/**
* @var boolean
* @ORM\Column(type="boolean",nullable=false)
* @Assert\NotNull
*/
private $featured;
/**
* @var boolean
* @ORM\Column(type="boolean",nullable=false)
* @Assert\NotNull
*/
private $enabled;
public function __construct() {
$this->order = 1;
$this->featured = false;
$this->enabled = true;
}
...
}
但是当我尝试保存新的模型关系时,我收到以下错误消息:
使用参数 [3,1] 执行 'INSERT INTO public_items (order,features,enabled) VALUES (?,?,?)' 时发生异常:\n\nSQLSTATE[42000]: 语法错误或访问违规:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在第 1 行的“订单、特色、启用)VALUES (3,1)”附近使用的正确语法
解决方法
经过几个小时的错误搜索后,我发现 ORM 对 order
列的处理效果不佳。它不是在内部使用 ´order´
而是按原样使用。
所以在模型中定义这一列的方式是
/**
* @var int
* @ORM\Column(name="`order`",type="smallint",nullable=false)
* @Assert\NotBlank
* @Assert\GreaterThanOrEqual(value="1",message="validators.min_value")
*/
private $order;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。