pid != 0) { $pids = self::getParentIds($row->pid); $pids .= "," . $row->pid; } $row->pids = $pids; }); self::beforeUpdate(function ($row) { $changeData = $row->getChangedData(); if (isset($changeData['pid'])) { $row->pids = self::getParentIds($row->pid) . ',' . $row->pid; } }); } public static function getParentIds($pid) { $row = self::get($pid); if ( !$row ) { return 0; } return $row->pids; } }