User Code List
PHP
---New Snippet
---New Snippet
---Symfony
------Tworzenie projektu
---------New Snippet
------Doctrine zamiast Propel
------często używane itp
---SVN
------SVN tortoise-nowy proj
------New Snippet
------Z tutoriala jobeet
---Yii
------1. Szkielet aplikacji
------2. Yiic na skróty
------3. Ustawienia bazy danych
------4. Scaffolding, CRUD, model tabeli db
------5. Uwierzytalenianie
------6. Model, rules()
------7. Model, safeAttributes()
------8. Model, relations()
------9. Kontroler, kontrola dostępu
------10. Model, zapisywanie, pobieranie elementów
------11. Formularze, budowa, przetwarzanie
------12. Szablony, widoki, partiale
------13. Themes, layouts
------ 5.1. Tworzenie widgetu logowania
------14. Ściąga, często używane itp cz.1
------15. Jak wykonać stronicowanie danych (pager)
------16. AJAX, aktualizowanie tresci po kliknieciu w button
---------New Snippet
------17. AJAX, aktualizowanie tresci po kliknieciu w cokolwiek
---------New Snippet
------18. Przetwrzanie danych z formularzy
------18. AJAX w AJAX, budowanie linków itp
---Konwersja systemu kodowania na inny
Apache
---Wirtualny host dla projektu
New Snippet
---New Snippet
JS
---Podświetlanie kontenera pola input
 
 
8. Model, relations()
 

Metoda relations(), a więc definiowanie obiektów powiązanych z modelem

Relacje służą do zdefiniowania obiektów (innych modeli) powiązanych z danym modelem.

Na przykładzie aplikacji bloga (model wiadomości Post):

public function relations()

{

return array(

'author'=>array(self::BELONGS_TO, 'User', 'authorId'),

'comments'=>array(self::HAS_MANY, 'Comment', 'postId',

'order'=>'??.createTime'),

'tagFilter'=>array(self::MANY_MANY, 'Tag', 'PostTag(postId, tagId)',

'together'=>true,

'joinType'=>'INNER JOIN',

'condition'=>'??.name=:tag'),

);

}

Powyższe relacje stwierdzają, że:

- wiadomość należy do autora, którego reprezentuje obiekt (model) User, a relacja pomiędzy nimi zostaje określona w oparciu o atrybut authorId modelu Post.

- wiadomość posiada wiele komentarzy, które reprezentuje klasa Comment a relacja pomiędzy nimi zostaje określona w oparciu o wartość atrybutu postId tych komentarzy. Komentarze te powinny zostać posortowane odpowiednio do czasu ich utworzenia.

Przy użyciu powyższej deklaracji relacji, możemy w łatwy sposób uzyskać dostęp do autora oraz komentarzy wiadomości w następujący sposób:

$author=$post->author;

echo $author->username;

$comments=$post->comments;

foreach($comments as $comment)

echo $comment->content;

Więcej informacji o tym jak deklarować i korzystać z relacji pod tym adresem:

http://www.yiiframework.com/doc/guide/database.arr

 
Sub-Article List