Symfony 原则,当我创建元素时,我需要在同一个表的其他字段中使用id的值
我有这门课:Symfony 原则,当我创建元素时,我需要在同一个表的其他字段中使用id的值,symfony,doctrine-orm,Symfony,Doctrine Orm,我有这门课: Article (id, code) 当我创建文章时,我需要在字段代码中添加id。例如,在我的数据库中,我需要: (id, code) 1, ARTICLE_1 2, ARTICLE_2 事实上,字段代码等于ARTICLE+ID,我尝试用以下代码来完成此字段: public function __construct() { $this->code = "ARTICLE_" . $this->getId(); } 但是当我添加文章时,不会生成Id,函
Article (id, code)
当我创建文章时,我需要在字段代码中添加id。例如,在我的数据库中,我需要:
(id, code)
1, ARTICLE_1
2, ARTICLE_2
事实上,字段代码等于ARTICLE+ID,我尝试用以下代码来完成此字段:
public function __construct() {
$this->code = "ARTICLE_" . $this->getId();
}
但是当我添加文章时,不会生成Id,函数getId不会返回任何内容。我尝试测试postPersist函数,但没有成功
这方面有好的做法吗
谢谢
Djoo在PHP中,不能使用+运算符将字符串与变量连接在一起,而是使用。象征 请尝试以下方法: $this->code=文章$这个->getId 这就是解决方案: 我将注释@ORM\HasLifecycleCallbacks添加到我的实体中,我有一个函数:
/** @ORM\PostPersist */
public function doStuffOnPostPersist()
{
$this->setCode('ARTICLE_' . $this->getId());
}
使用此解决方案,我拥有id,因为我已经持久化了
谢谢。我认为这不是这里的主要问题。在他坚持他的新实体时,没有id存在,因此正确的连接不能解决它。对不起,我写这个问题时出错了。我有一本书。在我的代码中,$this->getId在创建对象时不返回任何内容,因为对象尚未创建。糟糕,你说得对,我读得太快了。此外,正如devsheeep所说,在第一次刷新实体之前,您无法获取实体的id,至少如果您的id是自动生成的。如果代码可以从id生成,那么为什么要将代码放在首位?