親子関係をマッピングするために自分自身を参照するエンティティがあると仮定します
class Food
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="Food", inversedBy="foodChildren")
* @ORM\JoinColumn(name="food_group_id", nullable=true)
*/
protected $foodGroup;
/**
* @ORM\OneToMany(targetEntity="Food", mappedBy="foodGroup", fetch="LAZY", cascade={"remove"})
*/
protected $foodChildren;
food_group_id
データベースから完全な親オブジェクトを取得せずにエンティティを取得したいというユースケースがあります。 を使用してもfetch="LAZY"
、Doctrine が再度クエリを実行するのを防ぐことはできません。取得時に ID のみを返す方法はありますか$food->getFoodGroup()
?
ベストアンサー1
人生を複雑にしないで、ただ
$food->getFoodGroup()->getId()
これしない追加のクエリを実行するか、遅延ロードをトリガーしてください。
これは、 が自身の ID を認識しているプロキシ オブジェクトであるためです$food->foodGroup
。ロードされていないフィールドの getter メソッドを呼び出す場合にのみ、遅延ロードが実行されます。