2011-11-11 72 views
1

我正在尝试在Doctrine 2.1中创建双向一对多关系。我将我的代码与manual和其他examples进行了比较,但仍然看不到我做错了什么。我只看到一个空白的屏幕,所以很难调试。 (log_threshold = 4,但日志中没有错误)。双向一对多

我有这两个表:

用户

id 
name 

id 
items 

这里是我的两个模型(简称):

/** 
* @Entity 
* @Table(name="user") 
*/ 
class User 
{ 
    /** 
    * @Id 
    * @Column(type="integer", nullable=false) 
    * @GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @OneToMany(targetEntity="Cart", mappedBy="user_id") 
    */ 
    private $carts; 
} 

/** 
* @Entity 
* @Table(name="cart") 
*/ 
class Cart 
{ 
    /** 
    * @Id 
    * @Column(type="integer", nullable=false) 
    * @GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @ManyToOne(targetEntity="User", inversedBy="carts") 
    */ 
    private $user; 
} 

然后我尝试将它们链接

$user = $this->em->find('models\User', 8); 

$cart = new models\Cart(); 
$user->getCarts()->add($cart); 
$cart->setOwner($user); 

$this->em->persist($cart); 
$this->em->flush(); 

在这里,我得到一个空白屏幕。 没有一对多它工作正常。

+0

'$ user-> getCarts() - > add($ cart);'不起作用。你必须在User实体中创建一个方法addCart() – Nanocom

+0

是的,我有getCarts()和setOwner()。没有em-> flush()可以正常工作。 – PiTheNumber

回答

0

好的,我想出了自己。诀窍是显示错误消息:

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 

我需要用值填充一些字段。不允许为空。 DOH!