Czy identyfikator przez klucz obcy innej opcji jest dostępny tylko w #doctrine wersji 2.1?

Identity through foreign Entities


Identity through foreign entities is only supported with Doctrine 2.1

http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/composite-primary-keys.html#identity-through-foreign-entities

Potrzebuję utworzyć klucz złożony z dwóch atrybutów gdzie jeden jest kluczem obcym z innej tabeli. I wg dokumentacji można, ale cały czas dostaję jakieś dziwne błędy.

#doctrine #php #webdev #zendframework
via Android
  • 0
@jamzor: oczywiście, że będzie trzeba przerabiać ale liczyłem na to ze trochę mi to przyspieszy tworzenie widoków, kontrolerów... Nie mniej teraz już szukam rozwiązania problemu z ciekawości bo i tak zaraz siadam i to od ręki robię...
W Doctrine mam encję User o następującej budowie

User{

private $id,

/**@ORM\ManyToOne( targetEntity = "Role" )

* @ORM\JoinColumn(name="idRole", referencedColumnName="idRole")

private $role

}

W formularzu edycji mam Select z którego wybieram rolę użytkownika. W tablicy POSTem przekazywany jest tylko idRole.

Hydrator pobiera idRole i zamienia go na nowy obiekt

$this->setRole( new Role($array['idRole'] )
Problem w tym, że przy flush() Doctrine próbuje dodać nowy wpis do tabeli User i identyfikatorem roli, próbuje dodać
@ghost1511: mam wrażenie że bardziej #!$%@?ć tego nie mogłeś, zrób to jak człowiek, bo jak widze ze chcesz em do entitki wrzucać to krew mnie zalewa.

Jeżeli faktycznie nie używasz sf, to zaczytaj dane z formularza porób odpowiednie entitki i na samym koncu persist + flush.

@ghost1511: Może się do tego trochę od dupy strony zabierasz? Powiedz, co konkretnie chcesz, żeby się działo, skoro chcesz rozszerzać ArrayCollection? Raczej nie będziesz w stanie wyeliminować tego, że w obiekcie będziesz miał zwracane PersistenCollection po pobraniu z bazy - to, podejrzewam, jest kwestia budowy samego frameworka (Swoją drogą - istnieje jakieś spójna dokumentacja całego api tego frameworka?).

#symfony #symfony2 #doctrine #webdev #mysql

Ktoś ma pomysły dlaczego jak robie w query builderze coś takiego:

->addSelect($qb->expr()->max('bc.maxViewer').' as max')
to wyrzuca mi błąd

Class 'FROM' is not defined.


Błąd powoduje dodanie aliasu czyli .' as max'

Połowie internetu takie rozwiązanie działa a mnie nie ( ͡° ʖ̯ ͡°)

ktoś wie jak to rozwiązać ? jak przypisać alias ?