• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Symfony ORM relacja nie działa

Object Storage Arubacloud
0 głosów
200 wizyt
pytanie zadane 11 czerwca 2017 w PHP przez marcin99b Szeryf (82,080 p.)
zamknięte 12 czerwca 2017 przez marcin99b

Klasa Post

    /**
     * @var
     *
     * @ORM\OneToMany(targetEntity="Comment", mappedBy="post")
     */
    private $comments;

Klasa Comment

	/**
	* @var
	*
	* $ORM\ManyToOne(targetEntity="Post", inversedBy="comments")
	*/
    private $post;

Kod błędu
 

[Mapping]  FAIL - The entity-class 'AppBundle\Entity\Post' mapping is invalid:
* The association AppBundle\Entity\Post#comments refers to the owning side field AppBundle\Entity\Comment#post which does not exist.

Próbowałem kombinować z hermetyzacją i ścieżkami do plików, ale nic to nie zmienia

komentarz zamknięcia: Problemem była klasycznie literówka, zamiast @ przed ORM, dałem $

1 odpowiedź

+1 głos
odpowiedź 11 czerwca 2017 przez Ehlert Ekspert (212,670 p.)

A gdzie się podziało

@ORM\JoinColumn(name="post_id", referencedColumnName="id")

How to Work with Doctrine Associations / Relations

komentarz 11 czerwca 2017 przez marcin99b Szeryf (82,080 p.)

Kod SQL wygląda tak
 

CREATE TABLE comment (id INT AUTO_INCREMENT NOT NULL, content LONGTEXT NOT NULL, created_at DATETIME NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;

CREATE TABLE post (id INT AUTO_INCREMENT NOT NULL, title VARCHAR(255) NOT NULL, lead LONGTEXT NOT NULL, content LONGTEXT NOT NULL, created_at DATETIME NOT NULL, comments LONGTEXT NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;

CREATE TABLE user (id INT AUTO_INCREMENT NOT NULL, comments LONGTEXT NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;

Tworzy tabele, ale nie tworzy relacji między nimi, mimo że

php bin/console doctrine:schema:validate

Zwraca teraz wynik pozytywny, czyli

[Mapping]  OK - The mapping files are correct.

 

komentarz 11 czerwca 2017 przez Ehlert Ekspert (212,670 p.)
@ORM\Column(name="comments", type="text")

No to jest na pewno nie potrzebne. 

komentarz 11 czerwca 2017 przez marcin99b Szeryf (82,080 p.)

Po dodaniu tego

 php bin/console doctrine:schema:validate

nie wywala wcześniej podanego błędu
Jeszcze nie znam zbyt dobrze ORM, więc trudno mi samemu określić co tutaj jest powodem błędu

komentarz 11 czerwca 2017 przez marcin99b Szeryf (82,080 p.)
Dodatkowo PHPstorm widzi w klasie Comment $post i $user jako nie używane obiekty (zaznacza na szaro), w przypadku zmiany z prywatnych na publiczne są wyświetlane jako używane, ale nic to nie zmienia
komentarz 12 czerwca 2017 przez marcin99b Szeryf (82,080 p.)
Problemem była klasycznie literówka
Zamiast @ przed ORM wpisałem $ i nie działało, mimo dobrej mechaniki

Podobne pytania

0 głosów
1 odpowiedź 186 wizyt
pytanie zadane 27 kwietnia 2020 w PHP przez XiverKi Bywalec (2,050 p.)
0 głosów
1 odpowiedź 2,365 wizyt
pytanie zadane 17 listopada 2016 w PHP przez HaKIM Szeryf (87,590 p.)
–2 głosów
1 odpowiedź 174 wizyt
pytanie zadane 28 czerwca 2018 w C# przez pingwin1993 Użytkownik (570 p.)

92,555 zapytań

141,403 odpowiedzi

319,554 komentarzy

61,939 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...