首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cakephp:从表中检索数据

cakephp:从表中检索数据
EN

Stack Overflow用户
提问于 2015-02-09 22:25:43
回答 3查看 148关注 0票数 0

我试图从表中检索数据,但我希望返回值是一个值列表(而不是键值数组),例如:

代码语言:javascript
复制
$data = $this->find( 'list', array ('fields' => 'name');

电流输出:

代码语言:javascript
复制
Array ( [0] => Array ( [0] => Array ( [name] => WINNIPEG ) ) 
        [1] => Array ( [0] => Array ( [name] => ALBERTA) ) 
        [2] => Array ( [0] => Array ( [name] => MONTREAL ) ) 
        [3] => Array ( [0] => Array ( [name] => POPLAR PT ) )

我想要的:

代码语言:javascript
复制
Array(
WINNIPEG,
ALBERTA,
MONTREAL,
POPLAR PT
)

我怎么能这么做?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-09 23:02:45

在调用->find()的模型中,将displayField属性设置为name

代码语言:javascript
复制
class User extends AppModel {
    public $displayField = 'name';
}

这将使$this->find('list')输出默认为name字段。

阅读更多关于displayField 这里的信息。

注意:如果在调用->find()时指定字段,则应该在字段名前面加上模型名称,即。$this->find('list', ['fields' => 'MyModel.name']

票数 1
EN

Stack Overflow用户

发布于 2015-02-10 12:17:36

你不能

代码语言:javascript
复制
Array(
    WINNIPEG,
    ALBERTA,
    MONTREAL,
    POPLAR PT
)

你会得到的是

代码语言:javascript
复制
Array(
   0 => WINNIPEG,
   1 => ALBERTA,
   2 => MONTREAL,
   3 => POPLAR PT
)

你需要先做@Hippie说的(在你的模型上设置显示字段)

代码语言:javascript
复制
public $displayField = 'name';

然后得到名字列表

代码语言:javascript
复制
$namesList = $this->ModelName->find('list');

$namesList print=>

代码语言:javascript
复制
Array(
   0 => WINNIPEG,
   1 => ALBERTA,
   2 => MONTREAL,
   3 => POPLAR PT
)

如果您想得到这样的字符串:

代码语言:javascript
复制
"WINNIPEG, ALBERTA, MONTREAL, POPLAR PT"

您可以使用php函数内爆( ',‘,$namesList);

票数 0
EN

Stack Overflow用户

发布于 2015-02-09 23:06:35

$this->find('list',...)用于返回键值对,其中键是记录的id,而value通常是一个重要值,如nametitle

您需要使用适当的条件、字段规范等调用$this->find('all',...)。这将为您提供一个数组数组,每个返回的记录都有一个数组,其中每个数组都有一个用于模型名称的键(例如City ),作为另一个数组的值,每个字段的值被选定为键,每个字段的值作为值。

因此,要获得名字,您需要执行$results[0]['City']['name'];

您可以使用foreach语句或类似的方法将此数据结构转换为所需的数据结构。

经典的Cake方法是使用Hash实用程序类。要获得本例中所需的数组,请执行以下操作:Hash::extract($results, '{n}.City.name');

检查Hash实用程序类的文档,它有很多方便的东西。

干杯!

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28420622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档