質問

Symfony2/Doctrine2で主要なキーを自動的に生成する方法は?

私はすべてのエンティティとデータベースを作成しています。

Symfony2コントローラーでは、

<?php
/**
 * @Route("/myroute", name="myroute")
 * @Template()
 */
public function myrouteAction()
{
    /* Page de Création d'un retrait ou d'une réexpédition. */
    $obj = new Utilisateur();
    $obj->setUsermail('contact@mydomain.com');
    $obj->setUserpass('coucou');
    $obj->setUservalide('1');

    $em = $this->getDoctrine()->getEntityManager();
    $em->persist($obj);
    $em->flush();

    // [...]
}

テスト用です。すべてが正しくなったのは初めてでした(功利機関のテーブルは空でした)。さて、この関数をもう一度呼び出すと、次のようになります。

SQLSTATE [23000]:整合性制約違反:1062キーのための重複エントリ '0' '500内部サーバーエラー-PDOEXCEPTION

symfony-doctrine-mysqlに識別子を自動的にインクリメントしたいだけです。

役に立ちましたか?

解決

うまくいけば、これが役立つことを願っています。注釈と教義ORMを使用していると仮定すると、ドキュメントからオブジェクトに自動的に戦略を設定する必要があります(ドキュメントから)http://symfony.com/doc/current/book/doctrine.html)

/**
 * @ORM\Entity
 * @ORM\Table(name="product")
 */
class Product
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
-->  * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

オブジェクトを変更した後、データベーススキーマを更新することを忘れないでください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top