0

チケットとカテゴリの2つのエンティティがあります

class tickets 
{
    /**
     * @var integer $id
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
...
    /**
     * @ORM\OneToOne(targetEntity="categories", mappedBy="ticket")
     */
    private $categories;

public function setCategories($categories)
    {
        $this->categories= $categories;
    }

    public function getCategories()
    {
        return $this->categories;
    }
}

class categories
{
    /**
     * @var integer $id
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var integer $id_ticket
     *
     * @ORM\Column(name="id_ticket", type="integer")
     */
    private $id_ticket;
...
    /**
     * @ORM\OneToOne(targetEntity="tickets", inversedBy="categories")
     * @ORM\JoinColumn(name="id", referencedColumnName="id_ticket")
     */
    private $ticket;

public function setTicket()
    {
        $this->ticket= $ticket;

    }
public function getTicket()
    {
        return $this->ticket;
    }

チケットコントローラーで、新しいチケットを作成するときに、tickets.id=categories.id_ticketである新しいカテゴリを作成したいと思います。

$ticket= new tickets();
$category= new categories();
$ticket->setCategories($categories);
$em->persist($categories);
$em->persist($ticket);
$em->flush();

このエラーが発生します:

SQLSTATE [23000]:[Microsoft] [SQL Server Native Client 10.0] [SQL Server] IDENTITY_INSERTがOFFに設定されている場合、テーブル'categories'のID列に明示的な値を挿入できません。

そして、それが行おうとする挿入は次のとおりです。

INSERT INTO categories(id_ticket, ... , **id**) VALUES (?, ..., **?**)
Parameters: { 1: 'null', ..., **18: 'null'** }

私は何が間違っているのですか?なぜ「id」を挿入しようとしているのかわかりません。これがエラーが発生する理由ですが、私はsymfony2とdoctrineの初心者であり、それを解決する方法がわかりません。

4

1 に答える 1

1

所有側に問題があります(こちらをご覧ください)

試す :

$ticket= new tickets();
$category= new categories();
$categories->setTicket($ticket);
$em->persist($ticket);
$em->persist($categories);
$em->flush();
于 2012-12-13T10:55:49.280 に答える