У меня есть база данных с 3 таблицами, Оборудование, транзакция и транзакцияПолучить. В будущем будет несколько транзакций XYZ, по одной для каждого типа транзакции. Я использовал объединенное наследование для связи транзакции с транзакцией. Я также использую связь Много к одному между Оборудованием и транзакцией, поскольку единица оборудования может иметь несколько транзакций.
В настоящее время я работаю над добавлением оборудования. Это двухступенчатый процесс. Должно:
1: создать часть оборудования
2: Создать транзакцию / транзакциюПолучить
Моя проблема в том, что, когда я пытаюсь установить equipmentId для сохранения транзакции, он выдает исключение, сообщающее, что оно равно нулю.
Мой код выглядит следующим образом:
$em->persist($equipmentData);
$em->flush();
$trans = new TransactionReceive();
$trans->setEquipmentId($equipmentData->getId());
//Here I set all transactions info
$em->persist($trans);
$em->flush();
Спасибо
EDIT:
По-видимому, моя проблема была бы связана со вставкой с ассоциацией ManyToOne. Я заметил это, потому что я получаю ту же ошибку, даже если я жестко кодирую значение для ID оборудования в транзакции.
РЕДАКТИРОВАТЬ 2:
Субъект сделки
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Transaction
*
* @ORM\Table(name="transaction")
* @ORM\Entity(repositoryClass="AppBundle\Repository\TransactionRepository")
*
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="transactionType", type="string")
* ORM\@DiscriminatorMap({
* "receive" = "TransactionReceive",
* "changeout" = "TransactionChangeoutWheelset",
* })
*/
class Transaction
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var int
* @ORM\ManyToOne(targetEntity="Equipment")
* @ORM\Column(name="equipmentId", type="integer")
*/
private $equipmentId;
/**
* @return int
*/
public function getequipmentId()
{
return $this->equipmentId;
}
/**
* @param int $equipmentId
*
* @return self
*/
public function setEquipmentId($equipmentId)
{
$this->equipmentId= $equipmentId;
return $this;
}
// Other attributes, getters and setters
TransactionReceive сущность
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use AppBundle\Entity\Transaction;
/**
* TransactionReceive
*
* @ORM\Table(name="transaction_receive")
* @ORM\Entity(repositoryClass="AppBundle\Repository\TransactionReceiveRepository")
*/
class TransactionReceive extends Transaction
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var int
*
* @ORM\Column(name="gsThickness", type="integer")
*/
private $gsThickness;
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set gsThickness
*
* @param integer $gsThickness
*
* @return TransactionReceive
*/
public function setGsThickness($gsThickness)
{
$this->gsThickness = $gsThickness;
return $this;
}
/**
* Get gsThickness
*
* @return int
*/
public function getGsThickness()
{
return $this->gsThickness;
}
}