有没有办法编写一个 CakePHP 查询来返回除一个 via 之外的所有字段(列)find()
?还是我需要使用fields
参数并实际列出所有字段,排除字段除外?
例如,如果我有一个数据库表(模型)Company,其中包含以下字段:
id
name
street
city
state
zip
phone
通常,$this->Company->find('all')
将返回所有字段。我想从结果集中排除电话字段。
有没有办法编写一个 CakePHP 查询来返回除一个 via 之外的所有字段(列)find()
?还是我需要使用fields
参数并实际列出所有字段,排除字段除外?
例如,如果我有一个数据库表(模型)Company,其中包含以下字段:
id
name
street
city
state
zip
phone
通常,$this->Company->find('all')
将返回所有字段。我想从结果集中排除电话字段。
$fields = array_keys($this->Company->getColumnTypes());
$key = array_search('phone', $fields);
unset($fields[$key]);
$this->Company->find('all', array('fields' => $fields));
有关更多信息,请查看http://book.cakephp.org/2.0/en/models/additional-methods-and-properties.html#model-getcolumntypes
我可以想到几种方法来做到这一点
写出要包含在 fields 参数中的所有字段。如评论中所述,您可以使用 $this->Company->schema 以编程方式获取所有字段,而不是将它们写出来。
获取数据后取消设置不需要的字段。您也可以在模型的 afterFind 函数中执行此操作。