我正在尝试连接两个表并使用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();
}
任何帮助都会如此欣赏。
答案 0 :(得分:0)
您需要指定要从列具有相同名称的列获取列的表。例如。 album.id_album
和photo.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_name
。column 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');