连接表codeigniter时字段列表中的Ambigous列

时间:2016-11-29 12:19:27

标签: php mysql codeigniter

我正在尝试连接两个表并使用ajax,codeigniter和活动记录显示数据,但突然显示错误:

  

字段列表中的列'userfile'不明确

表格结构:

专辑:id_album,judul_album,userfile,userfile_type

照片:id_photo,id_album,judul_photo,userfile,userfile_type

控制器

public function ajax_list()
{
  $list = $this->Photo_model->get_datatables();
  $data = array();
  $no = $_POST['start'];

  foreach ($list as $data_foto) 
  {
    $no++;
    $row = array();
    $row[] = '<p style="text-align: center">'.$no.'</p>';
    $row[] = '<p style="text-align: left">'.$data_foto->judul_foto.'</p>';
    $row[] = '<p style="text-align: left">'.$data_foto->id_album.'</p>';
    $row[] = '<p style="text-align: center"><img src="'.base_url('assets/images/photo/').$data_foto->userfile.$data_foto->userfile_type.'" width="100px"></p>';

    $row[] = "
    <p style='text-align: center'>
    <a class='btn btn-sm btn-warning' href='".base_url('admin/photo/update/').$data_foto->id_photo."' title='Edit'><i class='fa fa-pencil'></i> EDIT</a>
  </p>
  <p style='text-align: center'>
    <a class='btn btn-sm btn-danger' href='".base_url('admin/photo/delete/').$data_foto->id_photo."', onClick=\"return confirm('Are you sure?');\"><i class='glyphicon glyphicon-trash'></i> DELETE</a>
  </p>";

  $data[] = $row;
}

$output = array(
          "draw" => $_POST['draw'],
          "recordsTotal" => $this->Photo_model->count_all(),
          "recordsFiltered" => $this->Photo_model->count_filtered(),
          "data" => $data
          );
//output to json format
echo json_encode($output);
}

模型

public function get_datatables()
{
  $this->_get_datatables_query();
  if($_POST['length'] != -1)
  $this->db->select('id_foto,judul_foto,foto_seo,ket,userfile as ufile,userfile_type as ufile_type');
  $this->db->join('album ', 'album.id_album = foto.id_photo');

  $query = $this->db->get();

  return $query->result();
}

任何帮助都会如此欣赏。

3 个答案:

答案 0 :(得分:0)

您需要指定要从列具有相同名称的列获取列的表。例如。 album.id_albumphoto.id_album。所以你选择应该看起来像这样

$this->db->select('id_foto,judul_foto,foto_seo,ket,[album|photo].userfile as ufile,[album|photo].userfile_type as ufile_type');

用您需要该列的表格替换[album|photo]。如果您从两者都需要它,那么下面的工作

$this->db->select('id_foto,judul_foto,foto_seo,ket,album.userfile as album_ufile,album.userfile_type as album_ufile_type,photo.userfile as photo_ufile,photo.userfile_type as photo_ufile_type');

答案 1 :(得分:0)

您应该使用table_namecolumn name来解决模棱两可的问题。

尝试这种方式:

public function get_datatables()
{
    $this->_get_datatables_query();
    if ($_POST['length'] != -1) {
        $this->db->select('id_foto, judul_foto, foto_seo,ket, album.userfile as ufile, album.userfile_type as ufile_type');
    }

    $this->db->join('album ', 'album.id_album = foto.id_photo');
    $query = $this->db->get();

    return $query->result();
 }

答案 2 :(得分:0)

感谢大家,最后解决了:

$this->db->select('id_foto, judul_foto, judul_album, foto.uploader as uploaders,foto.userfile as ufile,foto.userfile_type as ufile_type');
$this->db->join('album ', 'album.id_album = foto.id_album');