質問
私は次のようなエンティティクラスを持っています:
<?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;
}
}
所属していません StackOverflow