序言:几天前我问了一个解决HABTM过滤器的问题,即使有教程我也无法做到,所以“Obi Kwan Kenobi 你是我唯一的希望”。
我想要实现的目标:按在 StaffStaffgroup 中使用的 GroupID 过滤员工
我有以下表格布局
- 员工(一个人可以属于多个组)
- staff_staffgroups(HABTM 链接表)
- staffgroups(有组名)
变量 $tmp 为我提供了一个工作数组,但问题是 Staff 是 StaffStaffgroups 的子对象。我可以解析并重新组装一个数组,但这不是一个好的解决方案。所以我想在 Staff 上使用条件(参见注释行),但随后出现错误 1054“未找到列:1054 未知列”。我尝试绑定和取消绑定,但没有结果。
$group_id = 2;
$tmp = $this->Staff->StaffStaffgroup->find('all',
array('conditions' => array(
'StaffStaffgroup.staffgroup_id' => $group_id,
'Staff.isActive =' => "1",
'Staff.last_name LIKE' => "%$name%",
)
)
);
debug($tmp);
//$tmpConditions['AND'][] = array('StaffStaffgroup.staffgroup_id' => $group_ids);
编辑:
我尝试了条件和可控制的行为,但不幸的是它根本没有过滤任何东西
$this->Staff->contain(array('StaffStaffgroup'));
$this->paginate = array('StaffStaffgroup' =>array(
array('conditions' => array(
'StaffStaffgroup.staffgroup_id' => '2'
)
)
)
);
- 我添加到所有模型中: public $actsAs = array('Containable');
我也尝试了内部连接,但没有过滤:
$this->paginate = array( 'conditions' => array('StaffStaffgroup.staffgroup_id' => 2 ), 'joins' => array( array( 'alias' => 'StaffStaffgroup', 'table' => 'staff_staffgroups', 'type' => 'INNER', 'conditions' => 'StaffGroup_id = StaffStaffgroup.staffgroup_id' ) )
);