CakePHP:如何编写一个排除结果集中一个字段的find()查询?

时间:2013-08-16 21:51:36

标签: cakephp cakephp-1.3

有没有办法写一个CakePHP查询来返回除find()之外的所有字段(列)?或者我是否需要使用fields参数并实际列出除排除字段外的所有字段?

例如,如果我有一个数据库表(模型),Company,包含以下字段:

id
name
street
city
state
zip
phone

通常,$this->Company->find('all')会返回所有字段。我想从结果集中排除电话字段。

2 个答案:

答案 0 :(得分:7)

$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

答案 1 :(得分:1)

我可以想到几种方法来做到这一点

  1. 写出要包含在fields参数中的所有字段。如评论中所述,您可以使用$ this-> Company->架构以编程方式获取所有字段,而不是将其写出来。

  2. 获取数据后取消设置您不想要的字段。您也可以在模型的afterFind函数中执行此操作。