2014-01-27 2 views
0

Я борется с доктриной, у меня есть объект для блога, который ссылается на комментарии и бросает следующее сообщение об ошибке: Примечание: Не определено индекс: POST_IDDoctrine 2 ассоциация метание предупреждения

Он также получает все комментарии вне зависимости от post_id. Вот мое отображение:

/** 
    * @OneToMany(targetEntity="CommentsBundle\Entities\Comments", mappedBy="post_id") 
    */ 
    protected $comments; 

EDIT

Вот комментарии сущность:

<?php 

namespace CommentsBundle\Entities; 

use Doctrine\ORM\Mapping AS ORM; 

/** 
* @Entity @Table(name="comments") 
**/ 
class Comments 
{ 
    /** @Id @Column(type="integer") @GeneratedValue */ 
    private $id; 

/** @Column(type="string") */ 
protected $name; 

/** @Column(type="string") */ 
protected $email; 

/** @Column(type="string") */ 
protected $content; 

/** @Column(type="string") */ 
protected $date; 

/** @Column(type="integer") */ 
protected $user_id; 

/** @Column(type="integer") */ 
protected $post_id; 

/** 
* @ORM\ManyToOne(targetEntity="ContentBundle\Entities\Posts", inversedBy="comments") 
* @ORM\JoinColumn(name="post_id", referencedColumnName="id") 
*/ 
protected $post; 

public function setId($id) 
{ 
    $this->id = $id; 

    return $this; 
} 

public function getId() 
{ 
    return $this->id; 
} 

public function setName($name) 
{ 
    $this->name = $name; 

    return $this; 
} 

public function getName() 
{ 
    return $this->name; 
} 

public function setEmail($email) 
{ 
    $this->email = $email; 

    return $this; 
} 

public function getEmail() 
{ 
    return $this->email; 
} 

public function setContent($content) 
{ 
    $this->content = $content; 

    return $this; 
} 

public function getContent() 
{ 
    return $this->content; 
} 

public function setDate($date) 
{ 
    $this->date = $date; 

    return $this; 
} 

public function getDate() 
{ 
    return $this->date; 
} 

public function setUser_id($user_id) 
{ 
    $this->user_id = $user_id; 
} 

public function getUser_id() 
{ 
    return $this->user_id; 
} 

public function setPost_id($post_id) 
{ 
    $this->post_id = $post_id; 

    return $this; 
} 

public function getPost_id() 
{ 
    return $this->post_id; 
} 
} 

Заранее спасибо!

+0

Не является ли сущностная папка «Entity» не «Entities» в Symfony2 (которую вы, кажется, используете)? – Jivan

+0

Я фактически использую Silex, большая часть моего кода хранится так src/BundleName/Controllers src/BundleName/Entities src/BundleName/Views –

+0

ok. Какая у вас сторона? Можете ли вы отредактировать свой пост, чтобы показать это? – Jivan

ответ

1

Вы должны написать свой mappedBy по свойству Entity, а не по столбцу.

В принципе, свойства объектов должны «разговаривать друг с другом».

$comments отображается на $post, $post является обратное развитие по $comments:

class Posts 
{ 
    /** 
    * @OneToMany(targetEntity="CommentsBundle\Entities\Comments", mappedBy="post") 
    */ 
    protected $comments; 
} 

class Comments 
{ 
    /** 
    * @ORM\ManyToOne(targetEntity="ContentBundle\Entities\Posts", inversedBy="comments") 
    * @ORM\JoinColumn(name="post_id", referencedColumnName="id") 
    */ 
    protected $post; 
} 

Кроме того, я бы не определили $post_id в вашем Comments сущности. Просто $post, и когда вам нужно получить идентификатор Почты затем:

public function getPost_id() 
{ 
    return $this->post->getId(); 
} 

Чем чище этот путь.

+0

Отлично, большое вам спасибо! : D –

Смежные вопросы