質問

私は次のようなエンティティクラスを持っています:

<?php

namespace Entities;

/** @Entity @Table(name="User") */
class User
{
    /**
     * @Id
     * @Column(type="string", length=12)
     */
    private $no;

Doctrine 2識別子生成戦略セクションに基づきます。

なし:識別子がコードによって割り当てられている(したがって生成される)ことを教義に伝えます。新しいエンティティがentityManager#staveに渡される前に、割り当てを行う必要があります。 @generatedValueを完全に除外することと同じものはありません。

つまり、呼び出す前に値を設定できるように方法が必要です。

電話 ./doctrine orm:generate-entities セッター関数を生成するのではなく、クラスで手動で書く必要がありますか?

/**
 * Set no
 *
 * @param string $no
 */
public function setNo($no)
{
    $this->no = $no;
}

これは正しい方法ですか?

役に立ちましたか?

解決

これを行う「正しい」方法はありません。 Generate-Entitiesコマンドは単なるヘルパーです。あなたが使わなければならないものは何もありません。あなたはあなたが好きなようにすることができます。

割り当てられた戦略での唯一の要件は、$ em-> stave()が呼び出された場合、IDフィールドが非ヌルでなければならないことです。

たとえば、割り当てられたIDの場合、コンストラクターに必要なパラメーターにすることは理にかなっています。

class User
{
    private $no;
    public function __construct($no)
    {
        $this->no = $no;
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top