1

Temat: model / modele do komentarzy

Hej,

mam pytanie natury teoretycznej. Jak podeszli byscie do modelu komentarzy w serwisie spolecznosciowym ? Wiadomo, ze komentarz moze byc zostawiony pod wieloma rzeczami - np. pod wpisem na blogu, pod zdjeciem, pod profilem. W zwiazku z tym pytanie
czy zbudowac jeden ogolny model Komentarz czy moze dla kazdej z tych rzeczy budowac osobny model np. BlogKomentarz, ZdjecieKomentarz itp. ?

Wydaje mi sie, ze chyba lepiej zbudowac ogolny model komentarza np w ten sposob (SQL):

Komentarze
-------------
id
miejsce (pole typu enum - czyli gdzie dany komentarz zostal zostawiony np 'blog', 'profil', 'zdjecie')
klucz_obcy_id - czyli id bloga na ktorym zostal zostawiony komentarz, id profilu, id zdjecia itp.

Pozniej wystarczy tylko odpowiednio zbudowac relacje w CakePHP np. dla komentarzy na blogu:

class Post extends AppModel {
    var $name = 'Post';
    var $hasMany = array(
        'Komentarz' => array(
            'className'  => 'Komentarz',
            'foreignKey'    => 'klucz_obcy_id',
            'conditions' => array('Komentarz.approved' => '1', 'Komentarz.miejsce' => 'blog'),
            'order'      => 'Komentarz.created DESC'
        )
    );
}

Co o tym sadzicie ?

2

Odp: model / modele do komentarzy

1.

Raczej nazwa modelu zamiast abstrakcji typu "blog".

Dziwnie wyglada to pomieszanie z poplataniem  :
Komentarz.approved, Komentarz.miejsce...

2.

Tak na marginesie .... to obsluga komentow powinna byc zrobiona behaviorem, po to zebye nie klepac tego samego kodu w kazdym modelu z osobna... dry... ale pewnie o tym wiesz.


czyli  struktura tabeli comments:
id (int 11)
model (vc 48)
model_id ( int 11)
content (long text)
status (tiny int)
approved_by (int 11)
approved_on (timestamp)
created (timestamp)


1. model comments tworzysz tak ak kazdy inny model
2. Tworzysz behviora Commentable .... ktory powinien sie zajac obsluga komentarzy  ( min zaladowac na rzadnie model comment).

Ostatnio edytowany przez robal77 (2009-08-01 16:51:04)