Ich bin relativ neu zu Doctrin 2 und Symfony 3 und Abholung eines Projekts. Ich habe Probleme beim Bearbeiten eines Zuordnungsproblems, wenn ich eine benutzerdefinierte Klasse erstelle.Klasse AppBundle hat keine Assoziation namens
Kurz gesagt, wenn ich laufen die folgenden:
<?php
namespace AppBundle\Repository;
/**
* FormRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class FormRepository extends \Doctrine\ORM\EntityRepository
{
public function findWithDocId($id, $clientId=null) {
$docId = '2342';
$query = $this->createQueryBuilder('f');
$query->join('f.documentVersion', 'dv');
$query->where('dv.doc_id = :docId')->setParameter('docId', $docId);
$query->andWhere('f.id = :id')->setParameter('id',$id);
return $query->getQuery()->getOneOrNullResult();
}
}
Ich erhalte die folgende Fehlermeldung:
"cls": "Doctrine\\ORM\\Query\\QueryException",
"errors": [
"[Semantical Error] line 0, col 67 near 'dv WHERE dv.doc_id': Error: Class AppBundle\\Entity\\Form has no association named documentVersion"
Meine Form Entity wie folgt aussieht:
<?php
namespace AppBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use JMS\Serializer\Annotation\Groups;
use JMS\Serializer\Annotation\SerializedName;
use JMS\Serializer\Annotation\Accessor;
use JMS\Serializer\Annotation\VirtualProperty;
use JMS\Serializer\Annotation\Type;
use Doctrine\Common\Collections\Criteria;
use JMS\Serializer\Annotation\AccessorOrder;
/**
* @ORM\Entity(repositoryClass="AppBundle\Repository\FormRepository")
* @ORM\Table(name="forms")
* @AccessorOrder("custom", custom = {"id"})
*/
class Form {
......
/**
* @ORM\OneToOne(targetEntity="AppBundle\Entity\DocumentVersion", inversedBy="form")
* @ORM\JoinColumn(name="doc_id", referencedColumnName="id", nullable=false, unique=true, onDelete="CASCADE")
* @SerializedName("document_version")
* @Groups({"form_details_document"})
*/
private $document;
......
}
Und mein Dokument Version Entity sieht so aus:
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use JMS\Serializer\Annotation\Groups;
/**
* @ORM\Entity
* @ORM\Table(name="document_versions")
*/
class DocumentVersion {
.....
/**
* @ORM\OneToOne(targetEntity="AppBundle\Entity\Form", mappedBy="document", orphanRemoval=true, cascade={"persist"})
* @Groups({"document_versions"})
*/
private $form;
.....
Kann mir jemand helfen, was ich falsch mache? Vielen Dank im Voraus!
Ahhh Dank dieser nun Sinn macht. Ich dachte in SQL, wo Sie die Tabellen beitreten, aber es ist nicht. Danke vielmals! –
Yeah Doktrin nimmt eine andere Denkweise, Sie müssen im Grunde alle SQL zusammen vergessen und in Objekten denken. Auch wenn Sie 25 pro Monat oder nur einmal knfuniversity Tutorials auf symfony3/doctrine finden können, ist dies sehr nützlich, um mich zu starten. –