我正在尝试从表中检索数据,但我希望返回值是单个值列表(不是键值数组),如:
$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
)
我该怎么做?
答案 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类的文档,它有很多方便的东西。
干杯!