我试图从表中检索数据,但我希望返回值是一个值列表(而不是键值数组),例如:
$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
)我怎么能这么做?
发布于 2015-02-09 23:02:45
在调用->find()的模型中,将displayField属性设置为name。
class User extends AppModel {
public $displayField = 'name';
}这将使$this->find('list')输出默认为name字段。
阅读更多关于displayField 这里的信息。
注意:如果在调用->find()时指定字段,则应该在字段名前面加上模型名称,即。$this->find('list', ['fields' => 'MyModel.name']
发布于 2015-02-10 12:17:36
你不能
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函数内爆( ',‘,$namesList);
发布于 2015-02-09 23:06:35
$this->find('list',...)用于返回键值对,其中键是记录的id,而value通常是一个重要值,如name或title。
您需要使用适当的条件、字段规范等调用$this->find('all',...)。这将为您提供一个数组数组,每个返回的记录都有一个数组,其中每个数组都有一个用于模型名称的键(例如City ),作为另一个数组的值,每个字段的值被选定为键,每个字段的值作为值。
因此,要获得名字,您需要执行$results[0]['City']['name'];
您可以使用foreach语句或类似的方法将此数据结构转换为所需的数据结构。
经典的Cake方法是使用Hash实用程序类。要获得本例中所需的数组,请执行以下操作:Hash::extract($results, '{n}.City.name');
检查Hash实用程序类的文档,它有很多方便的东西。
干杯!
https://stackoverflow.com/questions/28420622
复制相似问题