Continuando a experiência,

Como não sobrescrevi o método save original, tive de utilizar a
seguinte artimanha para salvar os objetos pessoa e usuário ..

                $usuario = ORM::factory('usuario', 1);
                //altera pessoa
                $usuario->pessoa->nome = 'felipe bastos web';
                //altera usuario
                $usuario->senha = '123456';
                //precisa salvar pessoa isoladamente
                $usuario->pessoa->save();
                $usuario->save();

Até então, funciona numa boa, para update .. não deve rolar nenhum
problema pois o esquema é o mesmo.. e quanto ao delete, ... tem de
saber a engine que está sendo utilizada no banco ..

Caso for InnoDB, é bom apagar o usuário primeiro, para depois a
pessoa, por causa da chave estrangeira. Sendo MyISAM, não importa a
ordem.

Vai virar post no meu site, fica a dica não oficial para a galera
utilizar :D


On Apr 7, 8:43 pm, felipe moraes <[email protected]> wrote:
> Boa noite,
>
> Estava aqui, com certa curiosidade, e resolvi tentar fazer o seguinte:
>
> Como todo usuário é uma pessoa [possui dados pessoais], eu criei um model
> Pessoa e queria herdá-lo no model Usuário, usando o seguinte esquema:
>
> O banco,
>
> tabela pessoas
> id, nome, etc
>
> tabela *usuarios*
> id, grupo_id, *pessoa_id*, apelido, senha, email, etc
>
> Por tentativa e erro, descobri que precisava refazer os relacionamentos,
> mesmo extendendo a classe ..
>
> E os Models ficaram assim ...
>
> //Classe Pai
> class Model_Pessoa extends ORM {
>
>     public $_has_one = array(
>         'usuario' => array(
>             'model' => 'usuario',
>             'foreign_key' => 'pessoa_id'
>         )
>     );
>
>     public $_table_name = 'pessoas';
>
> }
>
> //Aqui a Herança ... Classe Filha
> class Model_Usuario extends Model_Pessoa {
>
>     public $_belongs_to = array(
>         'pessoa' => array(
>             'model' => 'pessoa',
>             'foreign_key' => 'pessoa_id'
>         ),
>     );
>
>     public $_table_name = 'usuarios';
>
> }
>
> Para minha surpresa, deu certo, até então :D .. Estou buscando dados
> previamente salvos no banco ..
>
> Obtive os dados de pessoa, através de usuário, usando o seguinte esquema:
>
> $usuarios = ORM::factory('usuario')->find_all();
>
> foreach($usuarios as $usuario):
>     var_dump($usuario->pessoa->nome);
> endforeach;
>
> Alguém já modelou seus models utilizando OO "ao pé da letra", da forma
> mencionada ? Encontrou algum problema ?
>
> Vou tentar salvar e editar o usuário para ver se rola algum pepino, mas
> relata aí o que ocorreu em suas velhas experiências :D
>
> --http://felipebastosweb.com.brhttp://twitter.com/felipebastosweb

-- 
Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana Php" dos 
Grupos do Google.
Para postar neste grupo, envie um e-mail para [email protected].
Para cancelar a inscrição nesse grupo, envie um e-mail para 
[email protected].
Para obter mais opções, visite esse grupo em 
http://groups.google.com/group/kohana-php?hl=pt-BR.

Responder a