Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Yii] Przypisywanie tagów do postów
janek5
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 1
Dołączył: 6.12.2014

Ostrzeżenie: (0%)
-----


Cześć ponownie!

Tworzę proste forum, mam tabele
posty(id, ...)
tagi(id, ...)
przypisanie_tagi(id, id_postu, id_tagu)

Użytkownik wpisuje tagi rozdzielone spacją i przypisywane są one do postu (jeżeli tag nie istnieje to dodawany jest to tabeli tagi i przypisywany). Jak to najlepiej zrealizować? Chodzi zarówno o wydajność jak i uniknięcie sytuacji, że jakieś dane zostaną "zgubione" (transakcje w Yii są możliwe dla wielu modeli?). Nie oczekuje oczywiście gotowego kodu, a raczej wskazówki/linki/pseudokod.

Dzięki!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


W tagi dajesz klucz Unique - problem duplikatów masz z głowy
Dodajesz tak, sprawdzasz ID dla grupy tagów przypisujesz IDki do postu i tyle.
Nie ma tu się nad czym za bardzo rozwodzić smile.gif
Go to the top of the page
+Quote Post
janek5
post
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 1
Dołączył: 6.12.2014

Ostrzeżenie: (0%)
-----


Dzięki za odpowiedź. Ok, ale w momencie dodawania Yii zwróci wyjątek (jeżeli będzie duplikat) i nie wykona się reszta. Więc trzeba by to jakoś inaczej rozwiązać, w bardziej rozbudowany sposób. Również kwestia zachowania spójnych danych, o których pisałem w pierwszym poście.
Go to the top of the page
+Quote Post
Turson
post
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Zawsze zanim wrzucisz do bazy możesz sprawdzić czy nie istnieje już rekord z tym id_postu i id_tagu.
Poza tym istnieje INSERT IGNORE
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 13:40