我有这样的模式:
public function listar_jogos_fase($id_fase) {
$this->db->select('fas.nome as `fase`, jogos.numero as `jogo`, jog1.nome as `jogador1`, jog2.nome as `jogador2`, jogos.data as `data`, jogos.hora as `hora`, jogos.local as `local`', FALSE);
$this->db->from('jogos');
$this->db->join('jogadores as jog1', 'ON jog1.id = jogos.jogador1');
$this->db->join('jogadores as jog2', 'ON jog2.id = jogos.jogador2');
$this->db->join('fases as fas', 'ON fas.id = jogos.fase');
$this->db->where('fase',$id_fase);
$dados['dados'] = $this->db->get()->result();
$dados['colunas'] = $this->db->list_fields('jogos');
return $dados;
}
因此,我希望收到以下结果,其中只有别名表的一些选定字段:
fase jogo jogador1 jogador2 data hora local
1° Fase 1 Andy Murray Juan Martin del Potro 2017-01-19 16:30:00 Roland Garros, Paris - Quadra 1
1° Fase 2 Novak Djokovic Roger Federer 2017-01-19 16:30:00 Roland Garros, Paris - Quadra 2
但是我收到了这个其他的,带有我的表的所有字段:
id fase numero jogador1 set1_jg1 set2_jg1 set3_jg1 set4_jg1 set5_jg1 jogador2 set1_jg2 set2_jg2 set3_jg2 set4_jg2 set5_jg2 data hora local
1° Fase 1 Andy Murray Juan Martin del Potro 2017-01-19 16:30:00 Roland Garros, Paris - Quadra 1
1° Fase 2 Novak Djokovic Roger Federer 2017-01-19 16:30:00 Roland Garros, Paris - Quadra 2
如果我使用它:
public function listar_jogos_fase($id_fase) {
$dados['dados'] = $this->db->query(
"SELECT
d.nome fase,
a.numero jogo,
b.nome jogador1,
c.nome jogador2,
a.data data,
a.hora hora,
a.local local
FROM jogos a
JOIN jogadores b ON a.id = b.id
JOIN jogadores c ON a.id = c.id
JOIN fases d ON a.fase = d.id
where fase=$id_fase"
)->result_array();
$dados['colunas'] = $this->db->list_fields('jogos');
return $dados;
}
我会收到这个:
Array
(
[dados] => Array
(
[0] => Array
(
[fase] => 1° Fase
[jogo] => 1
[jogador1] => Andy Murray
[jogador2] => Andy Murray
[data] => 2017-01-19
[hora] => 16:30:00
[local] => Roland Garros, Paris - Quadra 1
)
[1] => Array
(
[fase] => 1° Fase
[jogo] => 2
[jogador1] => Novak Djokovic
[jogador2] => Novak Djokovic
[data] => 2017-01-19
[hora] => 16:30:00
[local] => Roland Garros, Paris - Quadra 2
)
)
[colunas] => Array
(
[0] => id
[1] => fase
[2] => numero
[3] => jogador1
[4] => set1_jg1
[5] => set2_jg1
[6] => set3_jg1
[7] => set4_jg1
[8] => set5_jg1
[9] => jogador2
[10] => set1_jg2
[11] => set2_jg2
[12] => set3_jg2
[13] => set4_jg2
[14] => set5_jg2
[15] => data
[16] => hora
[17] => local
)
)
我知道如何处理这些结果,但如果可能,我希望使用CodeIgniter的$this->db->list_fields()
来获取别名表字段的名称(别名,而不是原始名称)。
因此,如果我使用$this->db->list_fields('jogos')
,我将收到原始表'jogos'的所有字段,如数组[columns]
所示。
但我不需要所有字段,我只需要[data]
数组中返回的7个字段,它们是:[fase],[jogo],[jogador1],[jogador2],[data],[hora],[local]
.
我想使用类似$this->db->list_fields('a')
的数据,其中'a'
是我的原始数据表'jogos'的别名,但是如果我使用$this->db->list_fields('a')
,我会得到这个错误:
Error Number: 42S02/1146
Table 'tennis.a' doesn't exist
SHOW COLUMNS FROM `a`
Filename: C:/wamp64/www/tennis/system/database/DB_driver.php
Line Number: 691
我怎么能做到这一点?这是可能的吗?
1条答案
按热度按时间roejwanj1#
试试这个: