簡體   English   中英

symfony2通過吸氣劑設定值

[英]symfony2 set value through getters

我想知道是否可以動態創建實體並持久化它們。 例如我有

class Member {

private $adress; //OneToOne(targetEntity="Adress", inversedBy="Member", cascade={"persist", "remove"})

和一類地址

class Adress
private $member //...
private $city // string

我想動態設置值。 我在字符串中有每個getter / setter名稱(在這種情況下,為Member.Adress.City ,還有一個像這樣工作的函數(簡化)

$data = explode('.', 'Adress.City');
$entity = Object; //Here, $entity is an empty Member
$cursor = $entity;

//-1 is to target only getters, and not setters
for($i = 0; $i < (count($data) - 1); $i++) { 

    $getter = 'get' . $data[$i];
    $cursor = $cursor->$getter();
}

$setter = 'set' . $data[count($data) - 1];
$cursor->$setter($value);

$em->persist($entity);

可悲的是,這行不通。我只能設置直接值,例如Member.Name ,而不能設置關系實體。 有辦法解決嗎? 謝謝 !

運行symfony2 cli命令doctrine:generate:entities ,它也應該為關系創建setter和getter方法。 然后,您可以在循環中使用它們。

所以我找到了一個解決方案,在主要實體(這里是Member)中,我更新了吸氣劑。 我在做類似的事情

If($this->adress == null) return new Adress()

但是它沒有在屬性中添加Adress對象,因此可以處理隨機的Adress對象。 我這樣更新:

If($this->adress == null) $this->adress = new Adress(); Return $this->adress;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM