2011-08-14 122 views
0

我是CakePHP的新手,虽然我非常喜欢能够轻松选择模型及其所有关联模型,但我试图弄清楚是否有更简单的方法从每个模型中选择的所有字段。CakePHP默认模型字段

例如,我不是在每次抓取模型数据时自动选择所有字段,而是不必费力地指定fields => array(...),有没有办法指定哪些字段是默认选择?

回答

0

是的,如果设置了'fields'键,你可以在找到该模型之前检入,如果没有,你可以在那里设置它。但我会说,除了使调试看起来更整洁之外,这样做几乎没有性能增益。如果您必须对模型进行更改,请记住另外一点。

+0

不同意,有安全收益...... –

0

你想看看在中可容纳的行为 - http://book.cakephp.org/view/1323/Containable

这是非常有据可查的,但给你一个简要概述

$this->Article->find('all', array(
    'contain' => array(
    'Author.name', 
    'Category' => array(
     'name', 
     'icon' 
    ) 
) 
)); 

将返回所有文章的数据,只用沿另外三个领域。

我将Containable添加到了我的app_model定义中,因为除了最简单的查找之外,我都使用它。

1

您也可以在模型中创建自己的查找方法:

function findSelected($options = array()) { 
$options['fields'] = array('id','name'); 
return $this->find('all', $options); 
} 

在控制器:

$this->Model->findSelected(array('order' => 'id ASC')); 

甚至更​​好于findSelected方法的选项数组合并,那么你甚至可以提供在飞行中的其他领域。

相关问题