1

__construct 関数で生成されたカスタム ID (つまり UUID) を持つエンティティがあります。

namespace AppBundle\Entity;
use Rhumsaa\Uuid\Uuid;
use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Entity
*/
class Person
{
    /**
    * @ORM\Id
    * @ORM\Column(type="string")
    */
    private $id;

    /**
    * @ORM\Column(type="string")
    */
    private $name;

    public function __construct()
    {
        $this->id = Uuid::uuid4()->toString();
    }

このエンティティは、ソナタとプロジェクトの他の部分で使用されます。このエンティティは、永続化してフラッシュする前に ID を持つ必要があるため、自動インクリメントを使用できません。

したがって、問題は、ソナタがエンティティを作成できないことです。これは、エンティティが既に ID を持っているため、実行時に作成オプションを使用して編集するためですが、このエンティティは現時点では存在しないため、失敗します。

問題は UUID を生成するためのライブラリではなく、「id」の値は失敗します。

誰でもそれを解決する方法を知っていますか? 問題を解決するための別の同様のアプローチはありますか?

4

1 に答える 1