0

我使用 Cake 已经有一段时间了,今天在写一个简单的搜索 Behavior 时我第一次注意到一些奇怪的东西。我没有做任何复杂的事情,只是$Model->find()在初始化$Model为s 之后在不同的模型上使用 s ClassRegistry::init('Model')。一切都很好,除了我有一个login在其中一个表中命名的数据库字段。该字段的值与*****我执行搜索的任何行一样返回!在 Controller 或 Model 中使用 s 时不会发生这种情况find(),只是在 Behavior 中使用。下面是我的代码:

...
...
$Model = ClassRegistry::init('User');
$fields = array('User.login', 'User.name', 'RelatedModel.field1', 'RelatedModel.field2');
$contain = array('RelatedModel');

if($searchBy === "name") {
    //some code and set $conditions
} else {
    //else some other code and set $conditions
}

$Model->Behaviors->load('Containable');
$results = $Model->find('all', array('conditions' => $conditions, 'fields' => $fields, 'contain' => $contain));
return $results;

debug()就是显示的内容:

array(
    (int) 0 => array(
        'User' => array(
            'login' => '*****',
            'name' => 'John Doe',
            'passwd' => 'a291a5c901cf51b75b6a50135ed5a04bc2e90c54',
        ),
        'RelatedModel' => array(
            'field1' => 'XXXXXXXX',
            'field2' => '7002'
        )
    )
)

实际结果应该是'login' => 'nsps_2013',因为它绝对是当我find()UserControllerand中使用时UserModel

4

1 回答 1

2

不,它没有。Debugger 类会自动为您清理输出,用星号替换一堆不同数组键的内容。中提供了完整列表。

于 2013-09-24T20:51:44.787 回答