Ok, es una relación tipo "One-To-One, Self-referencing", el código es este:
Código:
<?php
namespace Book\MainBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Book
* @ORM\Table()
* @ORM\Entity(repositoryClass="Book\MainBundle\Entity\BookRepository")
*/
class Book
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="phrase", type="string", length=255)
*/
private $phrase;
/**
* @var integer
* @ORM\OneToOne(targetEntity="Book")
* @ORM\JoinColumn(name="parent_branch", referencedColumnName="id")
*/
private $parentBranch;
/**
* @var integer
*
* @ORM\Column(name="creator_uid", type="integer")
*/
private $creatorUid;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set phrase
*
* @param string $phrase
* @return Book
*/
public function setPhrase($phrase)
{
$this->phrase = $phrase;
return $this;
}
/**
* Get phrase
*
* @return string
*/
public function getPhrase()
{
return $this->phrase;
}
/**
* Set parentBranch
*
* @param integer $parentBranch
* @return Book
*/
public function setParentBranch($parentBranch)
{
$this->parentBranch = $parentBranch;
return $this;
}
/**
* Get parentBranch
*
* @return integer
*/
public function getParentBranch()
{
return $this->parentBranch;
}
/**
* Set creatorUid
*
* @param integer $creatorUid
* @return Book
*/
public function setCreatorUid($creatorUid)
{
$this->creatorUid = $creatorUid;
return $this;
}
/**
* Get creatorUid
*
* @return integer
*/
public function getCreatorUid()
{
return $this->creatorUid;
}
}
Efectivamente si comento:
//$book->setParentBranch(1);
funciona !!!, pero no entiendo porqué ahí no puedo pasarle un integer, precisamente ese el el campo que actúa como foreign key en mi tabla.