perguntinha sobre modulos relacionados.

Bom dia pessoal, tudo bem, tive testando esse FrameWork PHP Yii, e achei muito irado.

Fiz o tutorialzinho la do blog de uma primeira aplicação e tal, achei muito simples e muito bom, e logo depois fui procurar algum tutoria falando sobre relacionamento e tudo mais, não encontrei, fui no forum e vi que algumas pessoas estavam perguntando sobre o relacionamento também, e achei alguns topicos no blog como esse (http://www.yiiframework.com/doc/api/CHasOneRelation).

Porem não entendi o que esta nele Public Properties e também Public Methods tem alguns links mas não consegui criar um relacionamento tipo uma tabela de Generos Musicais e outra tabela de Cds.

Como eu faria???

Obrigado a toda a comunidade…

Você define os relacionamentos no método relations(), em cada modelo.

No caso que você citou, ficaria ± assim:

class CD extends ActiveRecord {

public function relations() {

    return array(

        'genero'=>array(self::BELONGS_TO, 'Genero', 'id_genero'),

    );

}

}

Onde genero é o relacionamento do modelo Cd com o modelo Genero. Nesse relacionamento, especifico que o CD pertence (BELONGS_TO) a um Gênero.

Isso criará automaticamente uma propriedade chamada "genero", no seu modelo que poderá ser utilizada para acessar um instância do modelo Genero:

$cd->genero //retorna uma instância de Genero

Basicamente é isso, para outras informações, incluindo outros tipos de relacionamentos, você pode consultar a documentação no guia:

http://www.yiiframew…de/database.arr.

Boa, consegui mano.

Porem só consegui se o nome do campo de relacionamento for igual nas duas tabelas no caso na tabela cd campo id_genero e na tabela genero campo id_genero.

Teria como fazer com o nome dos campos diferentes?

Pode sim, desde que o relacionamento entre chaves primárias e estrangeiras esteja bem definido entre as tabelas.

No exemplo que passei, 'id_genero' é o nome do campo que é chave estrangeira na tabela cd. O AR do Yii irá relacionar este campo com a chave primária da tabela informada, no caso Genero, independente do nome dela.

Se estiver utilizando a versão mais atualizada e gerando suas classes através do yiic, ele já deveria gerar os relacionamentos automaticamente para você.

Entendi, mas estou trabalhando com mysql e eu crio as chaves estrangeiras la pelo phpmyadmin, alguem ai ja criou por la também se sim conseguiu criar o modulo ja relacionado?

Mesmo você criando as chaves estrangeiras pelo phpMyAdmin elas não deixam de ser chaves estrangeiras. Aqui o yiic já gera os relacionamentos corretamente, mas eu soh mando ele gerar o CRUD depois que minha tabela tá pronta com todos os relacionamentos, chaves estrangeiras e etc.

Ae pessoa, consegui, não sei o que era, mas acho que eu etava fazendo o relacionamento errado no mysql, agradeço a todos ai…