CakePHP将模型名称添加到查询中返回的信息

时间:2014-03-09 04:11:06

标签: php mysql cakephp

我想使用CakePHP的find()方法在返回的查询结果中包含模型名称。

例如,如果我做了

$person = $this->Person->find("first", array(
    "conditions" => array (
        "Person.id" => $id
    )
));

我回来了

Person{id:1, name:Abraham Lincoln}

我想回来

Person{id:1, name:Abraham Lincoln, model: Person}

我是相当前端的。我知道我可以遍历结果并在控制器级别添加这些,但这似乎很乏味,特别是因为我的大多数查询都使用contain()复杂得多。我想象在CakePHP的核心某处可以添加这种功能,我只是不知道在哪里。

基本上,我正在寻找CakePHP将数据库查询转换为php变量的位置,因此我可以注入我的附加模型值。

我知道我永远不会在我的应用程序中的任何位置使用列名“model”。我也确定我希望这些信息在我要求它出现在每一个问题中,尽管它可能没什么意义。

1 个答案:

答案 0 :(得分:2)

将此添加到您需要的每个模型:

public function afterFind($results, $primary = false) {
    foreach($results as $ikey => $item) {
        foreach($item as $skey => $subitem) {
            if(is_array($subitem))
                $results[$ikey][$skey]['model'] = $skey;
            else $results[$ikey]['model'] = $skey;
        }
    }
    return $results;
}

不幸的是,当我将它存储在AppModel中时,我无法完成这项工作。