您好我有下表数据
id parent_id name
1 Machine
2 3 Ram
3 4 Cpu
4 Computer
5 6 food1
6 food2
我需要选择可能的父母
for example
1) if we select 'machine' all others can parents
2) if we select 'cpu' then 'ram' and 'cpu' should not be there
3) if we take 'food2' then 'food2', 'food1' should not be there all other have possibility .
我如何在类中编写(php,mysql递归)函数。 注意: - 仅使用单一功能 请帮助我 提前致谢 。
答案 0 :(得分:2)
我有同样的问题
班级考试{
public static $roleIds;
public function availableParents() { self :: $ roleIds = null;
$discardRoleIds = implode(',',$this->unAvailableRoles());
$parentRoles = Acl_Model_Role::fetchAll("id NOT IN ({$discardRoleIds}) AND isactive = true" );
return $parentRoles;
}
/**
* Getting not available role id
*
* @author Linto
* @since 2009-11-25
* @return Array
*/
public function unAvailableRoles()
{
$where = "parent_id = {$this->getId()}";
self::$roleIds[] = $this->getId();
$count = Acl_Model_Role::count($where);
if($count != 0) {
foreach(Acl_Model_Role::fetchAll($where) as $role){
$role ->unAvailableRoles();
}
}
return self::$roleIds;
}
}
如果我们使用一次,它将正常工作如果情况是这样的话 $ role //创建了id为1的对象
$角色的> availableParents()
$ role //创建了ID为2的对象 $角色的> availableParents()
$ role //创建了ID为3的对象 $角色的> availableParents()
我们无法得到正确的答案(第一行也将改变第二个模型。)