4

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

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

id
name
street
city
state
zip
phone

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

4

2 回答 2

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

于 2013-08-17T04:30:52.327 回答
1

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

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

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

于 2013-08-16T23:45:54.880 回答