createCommand在Yii模型中返回null

时间:2013-07-28 06:36:32

标签: php yii

作为标题,我在PHP / Yii项目中创建一个模型,并创建如下方法:

public function getRootId($id, $module) {
    $com = Yii::app()->db->createCommand()->select('pid,id')
            ->from($this->tableName())
            ->where('id=:id', array(':id' => $id))
            ->andWhere('module=:module', array(':module' => $module))
            ->queryRow();
    if ($com['pid'] == 0 || empty($com['pid'])) {
        return $com['pid'];
    } else {
        $this->getRootId($com['pid'], $module);
    }
}

但是我无法获得可以在返回之前成功转储的返回值。然后,我添加一个静态致敬$ _itmes

private static $_items;

并更新如下代码:

public function getRootId($id, $module) {
    $com = Yii::app()->db->createCommand()->select('pid,id')
            ->from($this->tableName())
            ->where('id=:id', array(':id' => $id))
            ->andWhere('module=:module', array(':module' => $module))
            ->queryRow();
    if ($com['pid'] == 0 || empty($com['pid'])) {
        self::$_times = $com['id'];
    } else {
        $this->getRootId($com['pid'], $module);
    }
}

然后使用self :: $ _ items可以获得目标值。

朋友,谁能告诉我发生了什么?

1 个答案:

答案 0 :(得分:0)

你需要在else案件中返回..

return $this->getRootId($com['pid'], $module);

var_dump和静态赋值工作的原因是因为它是递归调用,当调用它时会打印/分配,但是如果返回,你需要最终返回值..