1
私はdoctrineとSymfonyを使用するプロジェクトに取り組んでいます。 現在、2つのエンティティ間でカスケードアノテーションを双方向関係で使用しようとすると問題が発生します。双方向関係のエラー
私は2つのエンティティを持っています。
MediaIndexer:
class MediaIndexer {
/**
* @var int
* @ORM\Column(type="guid")
* @ORM\Id
* @ORM\GeneratedValue(strategy="UUID")
*/
private $id;
/**
* @var ArrayCollection $identifiers
* @ORM\OneToMany(targetEntity="CelebrityBundle\Entity\MediaIdentifier",
* mappedBy="indexer",
* cascade={"all"},
* orphanRemoval=true)
*/
private $identifiers;
// ...
public function setValue($key, $value) {
foreach ($this->getIdentifiers() as $identifier) {
if ($identifier->getKey() == $key) {
$identifier->setValue($value);
return $this;
}
}
$identifier = new MediaIdentifier();
$identifier->setKey($key)
->setValue($value)
->setIndexer($this);
$this->addIdentifier($identifier);
return $this;
}
}
MediaIdentifier:
class MediaIdentifier {
/**
* @var int
* @ORM\Column(type="guid")
* @ORM\Id
* @ORM\GeneratedValue(strategy="UUID")
*/
private $id;
/**
* @var MediaIndexer $indexer
* @ORM\ManyToOne(targetEntity="CelebrityBundle\Entity\MediaIndexer", inversedBy="identifiers")
* @ORM\JoinColumn(onDelete="CASCADE", referencedColumnName="id")
*/
private $indexer;
/**
* @var string $content
* @ORM\Column(name="key", type="string", length=255, nullable=false)
*/
private $key;
/**
* @var int $type
* @ORM\Column(name="value", type="text", nullable=false)
*/
private $value;
// ...
}
(実際には、これらのクラスは、DBの "連想配列" を構築するために使用されます)。
私は少しのコードで、この関係を試してみた:私はこのコードを実行すると、私はエラーをした、
public function testAction()
{
$indexer = new MediaIndexer();
$indexer->setValue("screenName", "katyperry");
$indexer->setValue("pageId", "00000");
$this->getDoctrine()->getManager()->persist($indexer);
$this->getDoctrine()->getManager()->flush();
}
そして:
An exception occurred while executing 'INSERT INTO medias_identifiers (id, key, value, indexer_id) VALUES (?, ?, ?, ?)' with params ["b8a4c4e3-9312-11e7-93c0-e55e28abe26b", "screenName", "katyperry", "b8a47f19-9312-11e7-93c0-e55e28abe26b"]:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'key, value, indexer_id) VALUES ('b8a4c4e3-9312-11e7-93c0-e55e28abe26b', 'screenN' at line 1
はあなたにこの問題についてどんな考えを持っています?
おかげ
OMG私は月曜日からそれに乗っている!ありがとうございます:p! – graille
問題ありません!私たちすべてに起こる –