私は2つのエンティティを持っています
/**
* @ORM\Entity(repositoryClass="FLI\ContractBundle\Repository\CarrierFuelRepository")
* @ORM\Table(name="carrier_fuel")
*/
class CarrierFuel
{
/**
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string")
*/
protected $title;
/**
* @ORM\ManyToOne(targetEntity="FuelIndex")
*/
protected $index;
/**
* @ORM\OneToMany(targetEntity="FuelLine", mappedBy="carrier_fuel", cascade={"persist", "remove"})
*/
protected $fuel_lines;
}
/**
* @ORM\Entity(repositoryClass="FLI\ContractBundle\Repository\FuelLineRepository")
* @ORM\Table(name="fuel_line")
*/
class FuelLine
{
/**
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="CarrierFuel", inversedBy="fuel_lines")
*/
protected $carrier_fuel;
}
そして、これは私のフォームハンドラーのコードです:
public function process(CarrierFuel $fuel)
{
$this->form->setData($fuel);
if ('POST' === $this->request->getMethod())
{
$this->form->bind($this->request);
if ($this->form->isValid())
{
$this->em->persist($fuel);
$this->em->flush();
return true;
}
}
return false;
}
私が抱えている問題は、所有側(fuel_line)で外部キー(carrier_fuel_id)を設定していないことです。上記のプロセス メソッドを実行すると、このエラーが発生します。
An exception occurred while executing 'INSERT INTO fuel_line (id, min, max, ltl_surcharge, carrier_fuel_id) VALUES (?, ?, ?, ?, ?)' with params [14, "4", "4", "4", null]:
SQLSTATE[42703]: Undefined column: 7 ERROR: column "carrier_fuel_id" of relation "fuel_line" does not exist
LINE 1: ...SERT INTO fuel_line (id, min, max, ltl_surcharge, carrier_fu...
(編集) Carrier_fuel id を設定するように setFuelLine セッターを更新しましたが、実際にcarrier_fuel 行を挿入する前に、fuel_line を保存しようとしているようです。
パラメータ [26, "4", "4", "4", 29]:
SQLSTATE[42703]: 未定義の列: 7 エラー: リレーション "fuel_line" の列 "carrier_fuel_id" が存在しません LINE 1: ...SERT INTO fuel_line (id, min, max, ltl_surcharge,carrier_fu...