Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 原则,当我创建元素时,我需要在同一个表的其他字段中使用id的值_Symfony_Doctrine Orm - Fatal编程技术网

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生成,那么为什么要将代码放在首位?