从杂货店的多个表中列出

时间:2017-03-06 07:56:46

标签: php codeigniter grocery-crud

我刚开始探索杂货店。 我想列出链接的多个表中的值。 根据他们的指南/教程,我试图找出解决方案,但无法找到解决方案。 预期的查询和解决方案在此链接上 http://sqlfiddle.com/#!9/0c5faf/3

$crud = $this->generate_crud('admin_users_groups');
$crud->where('group_id','3');
$crud->columns('user_id','DistID');
$crud->display_as('user_id','user');
$crud->set_relation('id', 'dist_info', 'ref_idkey');
//$crud->set_relation_n_n('groups', 'users_groups','groups','user_id','group_id','description');
//$crud->set_relation('user_id', 'admin_users', '{username} - {first_name}{last_name}');
//$crud->set_relation_n_n('DistID', 'admin_users','dist_info','id','id','ref_idkey');
//$crud->set_relation('user_id', 'admin_users', 'email');    
//$crud->set_relation_n_n('id', 'admin_users_groups', 'admin_users', 'id','dist_id', 'name');
//$crud->set_relation_n_n('groups1', 'admin_users_groups', 'admin_groups','user_id', 'group_id', 'name');`

任何人都可以帮助我达到理想的解决方案吗?

1 个答案:

答案 0 :(得分:0)

您只是缺少表格中的某些列。但真正的诀窍是你基本上想要显示id列两次,首先显示id然后在set_relation调用中,但你不能这样做,因为显然库不会知道哪一个应该去哪里。您有两种选择,创建自定义模型以允许连接两个表,或使用回调手动获取所需的数据。第二种选择应该更容易:

$crud = $this->generate_crud('admin_users_groups');
$crud->where('group_id','3');
$crud->columns('id, 'group_id, 'user_id','DistID')
$crud->display_as('user_id','user');
$crud->callback_column('DistID', array($this, 'callback_distID');
...
}

public function callback_distID($value, $row) {
    //Load your model for the 'dist_info'
    $this->load->model('Dist_info_model);
    $dist = $this->Dist_info_model->get_dist_info($row->id);
    return $dist['ref_idkey'];

然后在你的模型中:

public function get_dist_info($id) {
    return $this->db->getwhere('Dist_info', array('recid'=>$id))->row_array;