我的数据库中有这个结构:
table certificados - > id PK,标题,描述
表cert_gal - > id PK,id_certificados FK,文件
表证书具有标题和描述,cert_galeria表包含每个证书的映像。 cert_galeria表的字段id_certified为FK。
我想在视图中显示所有证书及其各自的图库,使用连接询问查询,我有重复证书的数据,标题和说明必须是唯一的,并显示相应的图库。
我目前有这个结果:
2 =>
array (size=6)
'titulo' => string 'teste' (length=5)
0 => string 'teste' (length=5)
'descricao' => string 'teste' (length=5)
1 => string 'teste' (length=5)
'arquivo' => string 'c45e41a73c02356cc3370caea4e37358.png' (length=36)
2 => string 'c45e41a73c02356cc3370caea4e37358.png'
3 =>
array (size=6)
'titulo' => string 'teste' (length=5)
0 => string 'teste' (length=5)
'descricao' => string 'teste' (length=5)
1 => string 'teste' (length=5)
'arquivo' => string 'c29ecd046c6d90eb23eebd6d95ab3cff.png' (length=36)
2 => string 'c29ecd046c6d90eb23eebd6d95ab3cff.png' (length=36)
4 =>
array (size=6)
'titulo' => string 'teste' (length=5)
0 => string 'teste' (length=5)
'descricao' => string 'teste' (length=5)
1 => string 'teste' (length=5)
'arquivo' => string '471ed3267f3e342029523269083c3277.png' (length=36)
2 => string '471ed3267f3e342029523269083c3277.png' (length=36)
我的模特:
public function getCertificados(){
$sql = "SELECT certificados.titulo, certificados.descricao, cert_galeria.arquivo FROM certificados LEFT JOIN cert_galeria ON certificados.id = cert_galeria.id_certificado";
$stmt = $this->pdo->prepare($sql);
$stmt->execute();
if($stmt->rowCount()>0):
$dados = $stmt->fetchAll();
endif;
return $dados;
var_dump($dados); die;
}
我的控制员:
class certificadosController extends Controller{
public function index(){
$data = array();
$certificado = new Certificados;
$dados['certificado'] = $certificado->getCertificados();
$this->loadTemplate('certificados', $dados);
}
}
如何在不重复来自表格证书的数据(标题,说明)的情况下在我的视图中正确显示?
答案 0 :(得分:0)
解决了这个问题。
型号:
{"htmlstring" => "Some html string"} //use addslashes if issue creating string.
控制器:
public function getCertificados(){
$sql="SELECT id_certificado, titulo, descricao FROM certificados";
$stmt = $this->pdo->prepare($sql);
$stmt->execute();
if($stmt->rowCount()>0):
$dados = $stmt->fetchAll();
endif;
return $dados;
}
public function getImagesGal($id){
$sql = "SELECT cert_galeria.id_certificado, cert_galeria.arquivo FROM cert_galeria right JOIN certificados ON cert_galeria.id_certificado = :id GROUP BY cert_galeria.arquivo";
$stmt = $this->pdo->prepare($sql);
$stmt->bindValue(":id", $id);
$stmt->execute();
if($stmt->rowCount()>0):
$dados = $stmt->fetchAll();
endif;
return $dados;
}
查看:
class certificadosController extends Controller{
public function index(){
$dados = array();
$certificados = new Certificados();
$dadosCert = $certificados->getCertificados();
$lista = null;
foreach ($dadosCert as $dadosC):
$lista[$dadosC['titulo']] = ["id_certificado" => $certificados->getImagesGal($dadosC['id_certificado']), 'desc' => $dadosC['descricao']];
endforeach;
$dados['certificados'] = $lista;
$this->loadTemplate('certificados', $dados);
}
}