cakephp:从表中检索数据

时间:2015-02-09 22:25:43

标签: cakephp model

我正在尝试从表中检索数据,但我希望返回值是单个值列表(不是键值数组),如:

$data = $this->find( 'list', array ('fields' => 'name');

当前输出:

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 ) )

我想要的是什么:

Array(
WINNIPEG,
ALBERTA,
MONTREAL,
POPLAR PT
)

我该怎么做?

3 个答案:

答案 0 :(得分:1)

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

class User extends AppModel {
    public $displayField = 'name';
}

默认情况下,这会使$this->find('list')输出名称字段。

详细了解displayField here

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

答案 1 :(得分:0)

你无法获得

Array(
    WINNIPEG,
    ALBERTA,
    MONTREAL,
    POPLAR PT
)

你会得到什么

Array(
   0 => WINNIPEG,
   1 => ALBERTA,
   2 => MONTREAL,
   3 => POPLAR PT
)

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

public $displayField = 'name';

然后获取名单

$namesList = $this->ModelName->find('list');

$ namesList print =>

Array(
   0 => WINNIPEG,
   1 => ALBERTA,
   2 => MONTREAL,
   3 => POPLAR PT
)

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

"WINNIPEG, ALBERTA, MONTREAL, POPLAR PT"

你可以使用php function implode(',',$ namesList);

答案 2 :(得分:-1)

$this->find('list',...)用于返回键值对,其中键是记录的id,而value通常是重要值,例如name或{{ 1}}。

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

因此,要获得名字,您需要执行City

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

经典的Cake方法是使用$results[0]['City']['name'];实用程序类。要在此示例中获取所需的数组,您可以执行以下操作:Hash

检查Hash Utility类的文档,它有很多方便的东西。

干杯!