我有这样的列表
John
Jack
Husam
Koko
Rami
Loay
我具有此功能,可以让我改变孩子的父亲,在我的情况下,我可以改变Koko使其成为Loay的孩子。
我要停止此事,因为他有孩子,我如何验证此案以检查他是否有孩子然后不能更改,如果他没有孩子则可以更改他的父亲?
这是我的职责
public function updateParentId($parentId, $childId)
{
$statment = $this->db->prepare("UPDATE person SET parent = $parentId WHERE id = $childId");
$statment->execute();
$result = $statment->rowCount();
if($result == "1")
{
$message = '<label>successfully</label>';
}
else
{
$message = '<label>Wrong</label>';
}
echo $message;
}
}
答案 0 :(得分:1)
以下查询将返回层次结构中可可(拉米,罗伊)以下的所有子级。
$statment = $this->db->prepare('SELECT id, parent FROM (SELECT * FROM person ORDER BY parent, id) sorted, (SELECT @id:=:id) temp WHERE (FIND_IN_SET(parent, @id) > 0 || id = "Loay") AND @id:=CONCAT(@id, ",", id)');
$statment->execute();
$parents = $statment->fetchAll();
foreach ($parents as $value) {
if ($value['id'] == "Loay") {
throw new \Exception('Person can not be moved to its children.');
}
}
注意::在这里我并不完全了解表结构。因此,仅给出一个一般示例。
更新查询
$statment = $this->db->prepare("UPDATE person SET parent = :parentId WHERE id = :childId");
$statment->execute([":parentId" => $parentId, ":childId" => $childId]);
$result = $statment->rowCount();