GroceryCrud与where子句

时间:2016-02-18 07:57:13

标签: php codeigniter grocery-crud

我有三个表(简化):

enter image description here

我必须为每个用户显示所有房屋。
在我的控制器中,我有这样的功能:

public function create_houses_table($usr_id)
{
  $crud = new grocery_CRUD();

  $crud->set_language("italian");

  $crud->set_theme('datatables');
  $crud->set_subject('Casette');
  $crud->set_table('tbl_houses');

  $crud->set_relation_n_n('Casette', 
                          'tbl_users_houses', 
                          'tbl_users', 
                          'house_id', 
                          'user_id', 
                          'usr_name',
                          NULL,
                          array('user_id' => $usr_id));
...
}

我得到的是:

enter image description here

每当我从组合中选择一个用户时,我需要刷新usr_id上的列表过滤... 但我总是得到所有的房子

我错了什么?

2 个答案:

答案 0 :(得分:0)

这不是set_relation_n_n的预期用法(它将显示用户行内一个字段中的所有用户住宅)。

你想要的东西可以更好地完成从tbl_users_houses的列表,由客户端使用$ crud-> where()过滤,并与其他两个简单关系的表链接。

答案 1 :(得分:0)

如果我理解正确,您正在尝试仅获取登录用户的记录...并且您每个房子都有多个用户,因此存在 n-n 关系。

我也遇到了这个问题,这就是我所做的。

        $myprojects = $this->admin_model->get_employee_projects($this->user_id);
        $myprojectids = array_column($myprojects, 'id');
        //get only one column from the multi-dimensional array
        $crud->where("`projects`.id IN", "(" . implode(",", $myprojectids) . ")", false); 
        // the false disables escaping

        $crud->set_relation_n_n('assigned_employees', 'project_employees', 'employees', 'project', 'employee', 'name');
        //Only so it also still shows the name of Users assigned

所以基本上 projects 在这里就像房子一样,我使用 WHERE IN 子句根据我从模型方法中获得的项目过滤记录...