..:: MX Studio Fóruns ::..: relacionamento one-to-one - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

relacionamento one-to-one

#1 User is offline   psicoppardo 

  • Group: Membros
  • Posts: 7
  • Joined: 10-March 11

Posted 24 March 2011 - 09:58 PM

Pessoal tô com um problema "besta", mas que não obtive solução é o seguinte tenho uma tabela:

funcionario:
Campo Tipo
id_funcionario int(10)
matricula int(10)
id_lotacao int(11)
id_cargo int(11)

tabela cargo
id_lotacao int(11)
lotacao text

tabela lotacao
id_cargo int(11)
cargo text

a consulta que eu quero é mais ou menos esta.

SELECT funcionario.matricula, cargo.cargo, lotacao.lotacao
FROM `funcionario`
JOIN cargo ON ( funcionario.id_lotacao = cargo.id_cargo )
JOIN lotacao ON ( funcionario.id_lotacao = lotacao.id_lotacao )


no lumine estou fazendo o código assim:
<?
Lumine::import(Funcionario);
Lumine::import(Cargo);
Lumine::import(Lotacao);



$funcionario = new Funcionario();
$cargo = new Cargo();
$lotacao = new Lotacao();

$funcionario->join($cargo);
$funcionario->join($lotacao);
$funcionario->select('funcionario.matricula, cargo.cargo, lotacao.lotacao');


$funcionario->find();

while($funcionario->fetch()){
echo '<tr><th>cargo: '.$cargo->cargo. '</th>';
echo '<tr><th>cargo: '.$lotacao->lotacao. '</th>';



}
?>

Pô, se alguem pudesse me dar uma luz seria grato por demais.
0

#2 User is offline   hufersil 

  • Group: Moderadores
  • Posts: 1265
  • Joined: 15-January 04

Posted 25 March 2011 - 04:57 PM

View Postpsicoppardo, on 24 March 2011 - 09:58 PM, said:

funcionario:
Campo Tipo
id_funcionario int(10)
matricula int(10)
id_lotacao int(11)
id_cargo int(11)

tabela cargo
id_lotacao int(11)
lotacao text

tabela lotacao
id_cargo int(11)
cargo text


Aparentemente, na sua pergunta as tabelas cargo e lotacao estão com as definições invertidas, e no join de funcionario com cargo, seria funcionario.id_cargo = cargo.id_cargo, correto?


Pressupondo que sim, seria desta forma:

Lumine::import('Lotacao','Cargo','Funcionario');


$func = new Funcionario();
$func->alias('f')
	->join(new Cargo(),'inner','c','id_cargo','id_cargo')
	->join(new Lotacao(),'inner','l','id_lotacao','id_lotacao')
	->select('f.matricula, c.cargo, l.lotacao')
	->find();


Neste exemplo, explicitamente indicamos os campos.
Isto só é necessário caso você não tenha os mapeamentos de relacionamentos feitos em suas entidades.

@braços e fique com Deus!
0

#3 User is offline   psicoppardo 

  • Group: Membros
  • Posts: 7
  • Joined: 10-March 11

Posted 25 March 2011 - 05:52 PM

hufersil, em primeiro lugar muito obrigado pela resposta, tentei pela sua forma, ele apresenta o seguinte erro:

Fatal error: Uncaught exception 'Lumine_Exception' with message 'O campo id_cargo nao foi encontrado em Funcionario' in D:\xampp\htdocs\www\sindcan\lumine\lib\Base.php:1445 Stack trace: #0 D:\xampp\htdocs\www\sindcan\lumine\lib\Base.php(739): Lumine_Base->_getField('id_cargo') #1 D:\xampp\htdocs\www\sindcan\testeCons.php(9): Lumine_Base->join(Object(Cargo), 'inner', 'c', 'id_cargo', 'id_cargo') #2 {main} thrown in D:\xampp\htdocs\www\sindcan\lumine\lib\Base.php on line 1445

agora eu não entendo o prq? se o campo 'id_cargo' na tabela 'funcionario' existe.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic



Publicidade




1 User(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)