我已经很长时间试图解决这个问题了。我试图在stackoverflow,google和其他来源中寻找答案,但是我没有找到可能导致我解决问题的方法。我真的希望你能帮助我。提前致谢。
我正在使用Codeigniter 3
我在codeigniter中的查询如下所示:
$this->db->select($fields)
->from("usuario as u")
->join("usuario_info as ui ", "ui.idusuario = u.idusuario","left");
$this->db->where("usua_url",$this->url_usuario);
return $this->db->get(); //last line
我确实从查询结果中获取了具有ID(在数据库中为PK
且不能为NULL
的记录的数据)
我从CI
编译的查询是:
SELECT * FROM `usuario` as `u` LEFT JOIN `usuario_info` as `ui` ON `ui`.`idusuario` = `u`.`idusuario` WHERE `usua_url` = 'heri'
在应用result_array
方法之后,我得到的结果如下(我检查了一些字段名称及其值。)
array(9) {
["idusuario"]=> NULL
["other_field1"]=> string(9) "censored"
["other_field2"]=> string(60) "censored"
["other_field3"]=> string(26) "censored"
["other_field4"]=> string(19) "censored"
`["other_field5"]=> string(7) "censored"
["other_field6"]=> string(4) "censored"
["other_field7"]=> NULL
["other_field"]=> NULL
}`
当我将完全相同的查询复制并粘贴到DataGrip或Workbench中时,除idusuario
之外,我得到的结果相同,结果如下:
array(9) {
["idusuario"]=> 1
["other_field1"]=> string(9) "censored"
["other_field2"]=> string(60) "censored"
["other_field3"]=> string(26) "censored"
["other_field4"]=> string(19) "censored"
`["other_field5"]=> string(7) "censored"
["other_field6"]=> string(4) "censored"
["other_field7"]=> NULL
["other_field"]=> NULL
}`
答案 0 :(得分:0)
在尝试了一些事情之后,我认为对解决方案没有任何影响。
我有类似这样的查询方法:
public function selectPerfilInfo($fields = "*"){
$this->db->select($fields);
$this->db->from("usuario as u");
$this->db->join("usuario_info as ui ", "ui.idusuario = u.idusuario","left");
$this->db->where("usua_url",$this->url_usuario);
return $this->db->get();
}
我在控制器中这样称呼它:
//before calling the method I already set the `url_usuario` attribute of my class
$this->my_controller->selectPerfilInfo();
我将上面的行更改为此:
$this->my_controller->selectPerfilInfo("u.idusuario, u.other_field1");
将特定字段传递给函数后,它将返回正确的结果。 我不确定为什么会这样,这使我产生了很多疑问,因为我使用相同的结构从其他表中获取记录没有问题。
如果您能给我任何信息,我将不胜感激。谢谢