Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql表中的枚举值_Php_Mysql_Laravel_Enums - Fatal编程技术网

Php mysql表中的枚举值

Php mysql表中的枚举值,php,mysql,laravel,enums,Php,Mysql,Laravel,Enums,我的表中有一个enum列,我正在尝试从下拉列表中获取我在表中设置的值。首先,我编写了这个查询来获取列类型和列名称 然后我这样做是为了得到枚举值,如下所示 <?php $regex = "/'(.*?)'/"; preg_match_all( $regex , $modules->COLUMN_TYPE , $enum_array ); $enum_fields = $enum_array[1]; ?> 在这之前一切都是正确的。当我尝试存储时,它也尝试将Y=

我的表中有一个enum列,我正在尝试从下拉列表中获取我在表中设置的值。首先,我编写了这个查询来获取列类型和列名称

然后我这样做是为了得到枚举值,如下所示

<?php 
   $regex = "/'(.*?)'/";
   preg_match_all( $regex , $modules->COLUMN_TYPE , $enum_array );
   $enum_fields = $enum_array[1];
?>
在这之前一切都是正确的。当我尝试存储时,它也尝试将Y=>0和N=>1另存为。如何获得与枚举值相同的key=>值


控制台中$enum_字段的值为[0]=>Y,[1]=>N.

您最好将枚举硬编码到代码库中

假设您使用的是MySQL,枚举背后的想法实际上是将列中的值限制在特定的集合中-基本上说,如果值不是这些字符串中的一个,则不允许它

枚举并不是为了经常更改而设计的——事实上,如果您尝试更改它们,您可能会发现问题——更改它们可能需要一些数据库技巧,特别是如果您有大量记录的话

如果查找数据将更改,并且需要将其存储在数据库中,请将该列作为包含查找字段的另一个表的外键

如果您一直在使用枚举,只需在下拉列表中对列表进行硬编码。

您可以使用array\u combine方法使数组的键和值相同,如下所示

<?php
     $regex = "/'(.*?)'/";
     preg_match_all( $regex , $modules->COLUMN_TYPE , $enum_array );
     $keyValueSame = array_combine($enum_array[1],$enum_array[1]);
 ?>
现在$keyValueSame数组的键和值将具有相同的值

每个控制台的$keyValueSame值为[Y]=>Y[N]=>N

{!! Form::select($modules->COLUMN_NAME,$enum_fields) !!}
<?php
     $regex = "/'(.*?)'/";
     preg_match_all( $regex , $modules->COLUMN_TYPE , $enum_array );
     $keyValueSame = array_combine($enum_array[1],$enum_array[1]);
 ?>