cakephp:从 table 检索数据
cakephp: retrieving data from table
我正在尝试从 table 中检索数据,但我希望 return 值是单个值列表(不是键值数组),例如:
$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
)
我该怎么做?
在您调用 ->find()
的模型中,将您的 displayField 属性设置为 name
。
class User extends AppModel {
public $displayField = 'name';
}
这将使 $this->find('list')
默认输出名称字段。
阅读有关 displayField 的更多信息here。
注意:如果您在调用 ->find()
时指定字段,您应该在字段名称前加上模型名称,即。 $this->find('list', ['fields' => 'MyModel.name']
$this->find('list',...)
用于返回键值对,其中键是记录的id
,而value
通常是一个重要的值,如name
或title
.
您需要使用适当的条件、字段规范等调用 $this->find('all',...)
。这将为您提供一个数组数组,每个返回的记录对应一个数组,每个数组都有一个键模型名称,例如 City
,作为值的另一个数组,每个字段被选为键,每个字段的值作为值。
因此,要获得名字,您需要执行 $results[0]['City']['name'];
您可以使用 foreach 语句或类似语句将此数据结构转换为您想要的数据结构。
一个 classic Cake 的方法是使用 Hash
实用程序 Class。要在此示例中获得所需的数组,您可以执行以下操作:Hash::extract($results, '{n}.City.name');
查看哈希实用程序的文档 class,它有很多方便的东西。
干杯!
你得不到
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 打印=>
Array(
0 => WINNIPEG,
1 => ALBERTA,
2 => MONTREAL,
3 => POPLAR PT
)
如果你想得到这样的字符串:
"WINNIPEG, ALBERTA, MONTREAL, POPLAR PT"
您可以使用 php 函数 implode(',', $namesList);
我正在尝试从 table 中检索数据,但我希望 return 值是单个值列表(不是键值数组),例如:
$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
)
我该怎么做?
在您调用 ->find()
的模型中,将您的 displayField 属性设置为 name
。
class User extends AppModel {
public $displayField = 'name';
}
这将使 $this->find('list')
默认输出名称字段。
阅读有关 displayField 的更多信息here。
注意:如果您在调用 ->find()
时指定字段,您应该在字段名称前加上模型名称,即。 $this->find('list', ['fields' => 'MyModel.name']
$this->find('list',...)
用于返回键值对,其中键是记录的id
,而value
通常是一个重要的值,如name
或title
.
您需要使用适当的条件、字段规范等调用 $this->find('all',...)
。这将为您提供一个数组数组,每个返回的记录对应一个数组,每个数组都有一个键模型名称,例如 City
,作为值的另一个数组,每个字段被选为键,每个字段的值作为值。
因此,要获得名字,您需要执行 $results[0]['City']['name'];
您可以使用 foreach 语句或类似语句将此数据结构转换为您想要的数据结构。
一个 classic Cake 的方法是使用 Hash
实用程序 Class。要在此示例中获得所需的数组,您可以执行以下操作:Hash::extract($results, '{n}.City.name');
查看哈希实用程序的文档 class,它有很多方便的东西。
干杯!
你得不到
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 打印=>
Array(
0 => WINNIPEG,
1 => ALBERTA,
2 => MONTREAL,
3 => POPLAR PT
)
如果你想得到这样的字符串:
"WINNIPEG, ALBERTA, MONTREAL, POPLAR PT"
您可以使用 php 函数 implode(',', $namesList);