我今天开始使用SonataAdmin Bundle,但我无法弄清楚OneToMany的关系。我的用户可以关注(观察)offerts
实体:
class Obserwowane {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="Oferty",inversedBy="obserwowane")
* @ORM\JoinColumn(name="oferta", referencedColumnName="id_oferty", onDelete="CASCADE")
*/
protected $oferta;
/**
*
* @ORM\ManyToOne(targetEntity="User", inversedBy="obserwowane")
* @ORM\JoinColumn(name="user", referencedColumnName="id")
*/
protected $user;
}
class User {
/**
* @ORM\OneToMany(targetEntity="Obserwowane", mappedBy="user")
*/
public $obserwowane;
}
class Oferty {
/**
* @ORM\OneToMany(targetEntity="Obserwowane", mappedBy="oferta")
*/
protected $obserwowane;
}
我的servies.yml - > http://pastebin.com/biNCLhNt
我想在SonataAdminBundle的用户表单中显示以下优惠。我也希望它可以编辑。
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('id', 'integer', array('label' => 'id'))
->add('username', 'text', array('label' => 'Username'))
->add('email', 'text', array('label' => 'e-mail'))
->add('password', 'text', array('label' => 'Password'))
;
}
答案 0 :(得分:1)
将obserwowane定义为ArrayCollection并添加getter和setter方法,以便sonata使用它们与Obserwowane实体数组一起操作。
use Doctrine\Common\Collections\ArrayCollection;
class user{
// ...
public function __construct()
{
$this->obserwowane = new ArrayCollection;
}
/**
* Get obserwowane
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getObserwowane ()
{
return $this->obserwowane ;
}
public function setObserwowane (ArrayCollection $obserwowane )
{
$this->obserwowane = $obserwowane ;
return $this;
}
/**
* Add Obserwowane
*
* @param Obserwowane $obserwowane
* @return Obserwowane
*/
public function addObserwowane (Obserwowane $obserwowane )
{
$this->obserwowane[] = $obserwowane;
return $this;
}
/**
* Remove Obserwowane
*
* @param Obserwowane $obserwowane
*/
public function removeObserwowane(Obserwowane $obserwowane)
{
$this->obserwowane->removeElement($obserwowane);
}
}
最后在formMapper
中添加obserwowane字段$formMapper
->add('obserwowane')
<强>更新强>
要为Obserwowane实体添加或删除用户,请将这些功能添加到Obserwowaneclass
class Obserwowane{
// ..
/**
* Set User
*
* @param User $user
* @return User
*/
public function setUser($user)
{
$this->user = $user;
return $this;
}
/**
* Get User
*
* @return User
*/
public function getUser()
{
return $this->user;
}
}
在奏鸣曲
$formMapper
->add(user)