gpt4 book ai didi

php - 如何使用 CodeIgniter 获取表别名的 list_fields?

转载 作者:行者123 更新时间:2023-11-30 22:06:15 25 4
gpt4 key购买 nike

我有这个模型:

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            local1° Fase    1     Andy Murray     Juan Martin del Potro  2017-01-19  16:30:00 Roland Garros, Paris - Quadra 11° Fase    2     Novak Djokovic  Roger Federer          2017-01-19  16:30:00 Roland Garros, Paris - Quadra 2

But I'm receiving this other, with all the fields of my table:

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 local1° Fase  1      Andy Murray     Juan Martin del Potro 2017-01-19 16:30:00  Roland Garros, Paris - Quadra 11° Fase  2      Novak Djokovic  Roger Federer         2017-01-19 16:30:00  Roland Garros, Paris - Quadra 2

If I use that:

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' 的所有字段,如您在数组 [列]

但我不想要所有字段,我只想要 [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

我该怎么做?有可能吗?

最佳答案

试试这个:

   public function listar_jogos_fase($id_fase) 
{
$this->db->query("SELECT
fas.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.fases = d.id
where fase=$id_fase")->result_array();
}

关于php - 如何使用 CodeIgniter 获取表别名的 list_fields?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41657731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com