我有2个实体:
Game
Batting
游戏还有其他几个属性date
,location
等
一个游戏有几个Batting
个参与者,即一个板球游戏
击球有几个属性,Runs, Dismissal, Player
Game.php
/**
*
* @ORM\OneToMany(targetEntity="Batting", mappedBy="game", cascade={"persist", "remove"})
*/
private $battings;
/**
* Add battings
*
* @param \CW\CricketBundle\Entity\Batting $battings
* @return Game
*/
public function addBatting(\CW\CricketBundle\Entity\Batting $battings)
{
$this->battings[] = $battings;
return $this;
}
Batting.php
/**
* @ORM\ManyToOne(targetEntity="CW\CricketBundle\Entity\Game", inversedBy="battings", cascade={"persist"})
* @ORM\JoinColumn(name="game_id", referencedColumnName="id")
*/
private $game;
GameAdmin.php
->with("Batting")
->add('battings', 'sonata_type_collection', array(), array(
'edit' => 'inline',
'inline' => 'table',
'sortable' => 'id',
))
你可以看到下面的内容
问题在于添加Batting
并保存Game
。
我希望将game_id
保存在batting db表中,但它总是为NULL。
我的代码有什么问题?
由于
编辑:
将代码更改为:
public function addBatting(\CW\CricketBundle\Entity\Batting $battings)
{
$battings->setGame($this);
$this->battings[] = $battings;
return $this;
}
和
public function setGame(\CW\CricketBundle\Entity\Game $game)
{
$this->game = $game;
return $this;
}
答案 0 :(得分:4)
您需要在每个击球对象上设置游戏。
public function addBatting(\CW\CricketBundle\Entity\Batting $battings)
{
$battings->setGame($this);
$this->battings[] = $battings;
return $this;
}
答案 1 :(得分:1)
好的,所以将我的管理表单类改为以下内容:
->add('battings', 'sonata_type_collection',
array(
'by_reference' => false
),
array(
'edit' => 'inline',
'inline' => 'table',
'allow_delete' => true
)
)
似乎工作。现在,当我保存时,game_id
已设置。