我在数据库中有一个字段。它的类型是枚举,它看起来像
enum('NO ANSWER', 'ANSWERED', 'BUSY').
我需要将这些值放入下拉列表中。如何在cakephp中编写查询? 我试过了:
$result = TableRegistry::get('Calls')->find('list', ['valueField' => 'disposition'])->distinct('disposition')->toArray();
但它返回
[
(int) 1 => null,
(int) 77 => '',
(int) 64 => 'NO ANSWER',
(int) 65 => 'ANSWERED',
(int) 72 => 'BUSY'
]
但我需要这样的事情:
[
(int) 1 => 'NO ANSWER',
(int) 2 => 'ANSWERED',
(int) 3 => 'BUSY'
]
答案 0 :(得分:2)
我需要将这些值放入下拉列表
除非枚举值经常发生变化(如果是,为什么要使用枚举......)只需将您需要的数据放在某处:
$options = [
'NO ANSWER' => 'NO ANSWER',
'ANSWERED' => 'ANSWERED',
'BUSY' => 'BUSY'
];
然后使用它:
echo $this->Form->select('field', $options);
请注意$options
中的键是要提交的内容,值将显示的内容。有关select方法的更多信息,请参见the documentation。
答案 1 :(得分:1)
我在某处找到了这个答案,但我再也找不到了。你可以这样做:
BorderLayout
然后在您的表单中,您可以使用AD7six的答案结束并添加:
$cols = $this->Model->query("show columns from table_name like 'enum_column_name'")
$enum = explode(',', substr(str_replace(array("'", "(", ")"),'',$cols[0]['COLUMNS']['Type']), 4));
$options = array_combine($enum, $enum);
答案 2 :(得分:0)
问题是enum
的值是在create table中定义的,它们不是查询表数据时可用的数据。 How can I get enum possible values in a MySQL database? SO主题描述了如何通过php代码获取enum
的值。只需确保重新分配枚举值的键,使键从1开始,而不是从0开始(0表示空值)。