2012-09-01 52 views
3

考虑以下问题:
我有一个多到一个协会和Author之间Article学说关联映射和ArrayCollection的坚持错误

class Author{ 
    /** 
    * ... 
    *@var ArrayCollection_of_Article 
    */ 
    public $articles; 
} 

class Article{ 
    /** 
    * ... 
    *@var Author 
    */ 
    public $author; 
} 

制作一个新Article我有两种类型的代码:
第一之一:

$author = ORM::Find("Author",12); // fetch an Author with ID=12 
$art = new Article(); 
$art->author=$author; 
$author->articles->add($art); 
ORM::Persist($art); // persist it to write to database 

第二之一:(省略第4行)

$author = ORM::Find("Author",12); // fetch an Author with ID=12 
$art = new Article(); 
$art->author=$author; 
ORM::Persist($art); // persist it to write to database 

哪一个是正确的?
第一个工作正常。但是,第二个导致错误,例如下面的错误有时:

A new entity was found through a relationship that was not configured to cascade persist operations 

我想知道第二个是可能的还是它会总是原因SQL错误。
谢谢...

+0

第二次导致任何错误?哪一个以防万一? – moonwave99

+0

第二个导致错误**有时** –

+0

根据天气情况?请发布整个orm注释/配置文件,并附带消息错误[是PDO/Mysql错误还是PHP错误btw?]。 – moonwave99

回答

0

你必须使用getters和setter来访问关系,这是因为Doctrine构建了一个Proxy类,它从你的Entity类中延伸出来并覆盖你的getters来提供延迟加载。