我有一个包含一些外键的表。该表是:matriculas
。在此表中,我有一个表pessoas
的外键,在此表pessoas
中有一个表tipopessoas
的外键。
我尝试创建JOIN
以返回tipopessoas
的信息,但我无法做到这一点。
我怎么能这样做?
我需要这个
SELECT * FROM pessoas t1
INNER JOIN tipopessoas t2 ON (t1.tipopessoas_id = t2.id)
WHERE t2.descrica = "ALUNO";
我试过这个。
public function add() {
if ($this->request->is('post')) {
$this->Matricula->create();
if ($this->Matricula->save($this->request->data)) {
$this->Session->setFlash(__('The disciplina has been saved.'));
return $this->redirect(array('action' => 'index'));
}
$this->Session->setFlash(__('The disciplina could not be saved. Please, try again.'));
}
$this->set("pessoas", $this->Matricula->Pessoa->find("list",array(
"fields"=>array("nome"),
"join"=>array("table"=>"tipopessoas",
"alias"=>"tipo",
"type"=>"left",
"condition"=>array(
"Pessoa.tipopessoas_id = " => "tipo.id",
"tipo.descricao = " => "ALUNO"
))
)
));
}
这里的工作台项目
答案 0 :(得分:0)
您好@FernandoPaiva可以用此更新查找查询:
$this->Pessoa->find('all', array("fields" => "Pessoa.*, Tipopessoa.*","conditions" => array("Tipopessoa.descrica" => "ALUNO"),
"joins" => array(array(
"table" => "tipopessoas",
"alias" => "Tipopessoa",
"type" => "inner",
"condition" => array("Tipopessoa.id" => "Pessoa.tipopessoas_id"),
))));
希望这可能对你有用......
答案 1 :(得分:0)
我设法解决了!
我做了
<强>控制器强>
public function add() {
if ($this->request->is('post')) {
$this->Matricula->create();
if ($this->Matricula->save($this->request->data)) {
$this->Session->setFlash(__('The disciplina has been saved.'));
return $this->redirect(array('action' => 'index'));
}
$this->Session->setFlash(__('The disciplina could not be saved. Please, try again.'));
}
$this->set("pessoas", $this->Matricula->Pessoa->find('list', array(
'fields' => array("Pessoa.id", "Pessoa.nome", "Pessoa.tipopessoas_id",'Tipopessoa.id','Tipopessoa.descricao'),
'conditions' => array('Tipopessoa.descricao'=>'ALUNO'),
'recursive' => 0)));
}
查看强>
<div class="form-group">
<?php echo $this->Form->input("pessoas_id", array("empty"=>"Escolha uma opção",
"style"=>"width:200px",
"class"=>"form-control",
));?>
</div>