• 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

0 głosów
641 wizyt
pytanie zadane 11 czerwca 2017 w PHP przez marcin99b Szeryf (86,380 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 (215,230 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 (86,380 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 (215,230 p.)
@ORM\Column(name="comments", type="text")

No to jest na pewno nie potrzebne. 

komentarz 11 czerwca 2017 przez marcin99b Szeryf (86,380 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 (86,380 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 (86,380 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ź 360 wizyt
pytanie zadane 27 kwietnia 2020 w PHP przez XiverKi Bywalec (2,050 p.)
0 głosów
1 odpowiedź 2,797 wizyt
pytanie zadane 17 listopada 2016 w PHP przez HaKIM Szeryf (87,590 p.)
–2 głosów
1 odpowiedź 282 wizyt
pytanie zadane 28 czerwca 2018 w C# przez pingwin1993 Użytkownik (600 p.)

93,742 zapytań

142,678 odpowiedzi

323,297 komentarzy

63,328 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...