[Symfony][Doctrine] jak poprawnie definiować relacje w schema.yml |
[Symfony][Doctrine] jak poprawnie definiować relacje w schema.yml |
15.09.2011, 14:09:33
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 13.09.2011 Ostrzeżenie: (0%) |
Witam,
chciałem zapytać jak należy definiować relacje w schema.yml? czy należy wszędzie definiować relacje, tzn, jeżeli 'Artykul' ma relacje do 'Autor' to należy również zadbać o odwrotną relację w pliku schema.yml? plik schema u mnie wygląda następująco: Kod --- detect_relations: true options: collate: utf8_polish_ci charset: utf8 type: InnoDB Artykul: tableName: artykul columns: idArtykul: primary: true type: integer(4) notnull: true autoincrement: true tytul: type: string(45) autorId: type: integer(4) notnull: true relations: Autor: local: autorId foreign: idAutor foreignAlias: artykuly Autor: tableName: autor columns: idAutor: primary: true type: integer(4) notnull: true autoincrement: true nazwa: type: string(100) relation: Artykul: local: idAutor foreign: autorId jak pobrać artykuły wraz z ich autorami? próbowałem podobnie jak w jobeet ale za każdym razem otrzymuję inny błąd, ostatnie wypociny to: plik: ArtykulTable.class.php
Kod 500 | Internal Server Error | Doctrine_Table_Exception Unknown relation alias artykuly może ktoś polecić jakąś książkę? mam "symfony w przykładach" i "programowanie z wykorzystaniem Symfony, CakePHP, Zend Framework" ale obydwie opierają się o propel'a. wiem że Polskich niema, ale to żaden problem, może być po angielsku. poradziłem sobie już z joinem, ale pozostaje kwestia jak opisywać relacje i czy możecie polecić jakieś książki |
|
|
15.09.2011, 21:55:23
Post
#2
|
|
Grupa: Zarejestrowani Postów: 72 Pomógł: 2 Dołączył: 14.02.2007 Ostrzeżenie: (0%) |
Witaj
Jeśli definiujesz relację jeden do wielu czyli autor może mieć jeden lub więcej artykułów to musisz w Autor odpowiednio to zdefiniować: Kod Autor: relations: Artykul: local: idAutor foreign: autorId type: many a w Artykul Artykul: relation: Autor: local: autorId foreign: idAutor type: one Jeśli używasz doctrine wtedy wygenerujesz model który powiąże Autora z arykułami czyli jesli pobierzesz obiekt autora i zrobisz na nim metodę getArticle() wtedy pobierzesz wszystkie artykuly należące do tego autora. W skrócie wyglądałoby to tak:
Jeśli chcesz pobrać artykuły wraz z ich autorami w modelu robisz np tak: Model - AutorTable:
teraz w module jakiejs akcji robisz:
w ten sposób pobierzesz sobie obiekt autora a w nim obiekty jako kolekcje artykulow przypisanych dla tego autora. Albo ostatni sposób to poprostu zapytanie w modelu z innerJoin i leftJoin Pisałem z palca więc moga być literóki w kodzie albo błędy. pozdraiwam |
|
|
16.09.2011, 07:42:16
Post
#3
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 13.09.2011 Ostrzeżenie: (0%) |
dzięki za świetną odpowiedź.
rozpoczynam naukę symfony i na razie biegam trochę po omacku:] przy Zendzie było prościej a tutaj wszech ogarniające magiczne generatory. ruszyłem z dokumentacją doctrine. bardzo pomogł fragment tłumaczący że to zapytania DQL i nie należy ich traktować jak SQL jeżeli znasz jakiegoś bloga o symfony proszę napisz, obecnie szukam wszelkich materiałów, przy zendzie tego było sporo, a w tym temacie jakośniemogę za dużo znaleźć ;/ pozdrawiam |
|
|
16.09.2011, 08:13:47
Post
#4
|
|
Grupa: Zarejestrowani Postów: 91 Pomógł: 13 Dołączył: 23.08.2008 Ostrzeżenie: (0%) |
Jeśli zaczynasz z Symfony to dlaczego nie zacząłeś z najnowszą wersją?
|
|
|
16.09.2011, 09:14:46
Post
#5
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 13.09.2011 Ostrzeżenie: (0%) |
muszę się przestawić z Zenda na Symfony do nowej pracy.
wiem tylko że sf2 jest szybsze, czy jeszcze ma jakieś znaczące zalety? nie mówię tutaj o aktualności i czasie wspierania produktów bo to sprawy oczywiste. |
|
|
16.09.2011, 09:27:32
Post
#6
|
|
Grupa: Zarejestrowani Postów: 91 Pomógł: 13 Dołączył: 23.08.2008 Ostrzeżenie: (0%) |
nie mam czasu zeby sie na ten temat rozwodzic wiec: http://symfony.com/symfony-in-five-minutes
to Ci powinno rozjasnic sprawe |
|
|
Wersja Lo-Fi | Aktualny czas: 19.05.2024 - 13:43 |