Symfony - 外键的 Doctrine Annotations 默认值
Symfony - Doctrine Annotations default value for a foreign key
我们有两个具有 ManyToOne 基数关系的实体。
Article 实体有三种状态。此状态记录在 ArticleStatus table.
文章状态table内容:
编号 |状态
1 - 待定
2 - 已批准
3 - 拒绝
Entity/Article.php
<?php
namespace App\Entity;
use App\Repository\ArticleRepository;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass=ArticleRepository::class)
*/
class Article
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string")
*/
private $article_name;
/**
* @ORM\ManyToOne(targetEntity=ArticleStatus::class)
* @ORM\JoinColumn(nullable=false)
*/
private $status;
...
public function getStatus(): ?ArticleStatus
{
return $this->status;
}
public function setStatus(?ArticleStatus $status): self
{
$this->status = $status;
return $this;
}
}
Entity/ArticleStatus.php
<?php
namespace App\Entity;
use App\Repository\ArticleStatusRepository;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass=ArticleStatusRepository::class)
*/
class ArticleStatus
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=100, nullable=false)
*/
private $status;
public function getId(): ?int
{
return $this->id;
}
public function getStatus(): ?string
{
return $this->status;
}
public function setStatus(string $status): self
{
$this->status = $status;
return $this;
}
}
每篇新文章都需要以待定状态创建。如何使用 Doctrine Annotations 默认将值 1 设置为 status_id 外键?
在注释中这是不可能的。您可以尝试几种不同的方法,我建议使用 pre-persist 事件。
可能duplicate
我们有两个具有 ManyToOne 基数关系的实体。 Article 实体有三种状态。此状态记录在 ArticleStatus table.
文章状态table内容:
编号 |状态
1 - 待定
2 - 已批准
3 - 拒绝
Entity/Article.php
<?php
namespace App\Entity;
use App\Repository\ArticleRepository;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass=ArticleRepository::class)
*/
class Article
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string")
*/
private $article_name;
/**
* @ORM\ManyToOne(targetEntity=ArticleStatus::class)
* @ORM\JoinColumn(nullable=false)
*/
private $status;
...
public function getStatus(): ?ArticleStatus
{
return $this->status;
}
public function setStatus(?ArticleStatus $status): self
{
$this->status = $status;
return $this;
}
}
Entity/ArticleStatus.php
<?php
namespace App\Entity;
use App\Repository\ArticleStatusRepository;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass=ArticleStatusRepository::class)
*/
class ArticleStatus
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=100, nullable=false)
*/
private $status;
public function getId(): ?int
{
return $this->id;
}
public function getStatus(): ?string
{
return $this->status;
}
public function setStatus(string $status): self
{
$this->status = $status;
return $this;
}
}
每篇新文章都需要以待定状态创建。如何使用 Doctrine Annotations 默认将值 1 设置为 status_id 外键?
在注释中这是不可能的。您可以尝试几种不同的方法,我建议使用 pre-persist 事件。
可能duplicate