leí documentación oficial y un montón de hilos, pero todavía no encuentro solución para mi situación. Mi caso es muy básico. Tengo 2 entidades: comentarios y palabras clave para ellos. Un comentario puede tener muchas palabras clave, pero cada palabra clave es solo para un comentario. Las palabras clave no son únicas en la tabla de palabras clave. Así que decidí que esta es una relación de uno a muchos. estructura de las tablas son simplemente gustaría sigue:problema para entender la cartografía relación en la doctrina 2
palabras clave
id int(11)
comment_id int(11)
text varchar(30)
comentarios
id int(11)
text text
aquí es cómo ellos mapeado:
/**
* @Entity
* @Table(name="comments")
**/
class Comments
{
/** @Id @Column(type="integer") */
private $id;
/** @Column(type="text") */
private $text;
/**
* @OneToMany(targetEntity="keywords", mappedBy="comment_id")
*/
private $keywords;
public function getText(){return $this->text;}
public function getId(){return $this->id;}
public function getKeywords(){return $this->keywords;}
}
/**
* @Entity
* @Table(name="keywords")
*/
class Keywords
{
/** @Id @Column(type="integer") */
private $id;
private $text;
public function getText(){return $this->text;}
public function getId(){return $this->id;}
}
y cómo utilizarlo es la siguiente:
$comments = $this->em->getRepository('comments')->findAll();
foreach($comments as $comment){
foreach($comment->getKeywords() as $keyword){
$keyword->getText();
}
}
y consiguió esta errores:
Notice: Undefined index: comment_id in C:\web_includes\doctrine\ORM\Persisters\BasicEntityPersister.php on line 1096
Notice: Trying to get property of non-object in C:\web_includes\doctrine\ORM\Persisters\BasicEntityPersister.php on line 1098
Warning: Invalid argument supplied for foreach() in C:\web_includes\doctrine\ORM\Persisters\BasicEntityPersister.php on line 1098
Notice: Undefined index: comment_id in C:\web_includes\doctrine\ORM\PersistentCollection.php on line 168
Fatal error: Call to a member function setValue() on a non-object in C:\web_includes\doctrine\ORM\PersistentCollection.php on line 169
Cuál es el problema? ¿Dónde debería definir comment_id? ¿Mi mapeo es correcto? Realmente me quedé atrapado y necesito ayuda, por favor, cualquier consejo es bienvenido.
¿qué pasa con 'comment_id'? ¿cómo se establece la relación entre los comentarios y las palabras clave? – Sadat
comment_id es un campo en la base de datos en la tabla de palabras clave que tienen id del comentario esta palabra clave pertenece. Supongo que la doctrina lo usará al seleccionar palabras clave para comentarios. relación es así OneToMany (targetEntity = "palabras clave", mappedBy = "comment_id") ¿es correcto? – SET