如何更改redbeanphp中列的类型?

如何更改redbeanphp中列的类型?,php,orm,redbean,Php,Orm,Redbean,我使用的是RedBeanPHP,我有一个数字字符串,是否可以像字符串一样存储它,而不是双精度类型?我的示例是next,但它不起作用: $participant = R::dispense('participants'); $participant->setMeta("participants.number","string"); $participant->number = $number; R::store($participant); Redb

我使用的是RedBeanPHP,我有一个数字字符串,是否可以像字符串一样存储它,而不是双精度类型?我的示例是next,但它不起作用:

    $participant = R::dispense('participants'); 
    $participant->setMeta("participants.number","string");
    $participant->number = $number;
    R::store($participant);

Redbean check属性给定值要为列设置正确的类型,我建议您每次都关闭freeze选项,但是,当您需要更改某些内容时,只需打开它。我的意思是,当你真的需要对你的桌子进行一些改变时,只需打开冻结,例如:

// the false param will disable db changes
R::setup('dns', 'user', 'pass', false);changes (freeze option)

//...
//... let's imagine you have some code here
//...

R::freeze(false);

$participant = R::dispense('participants');
$participant->number = 'intert any string'; // need to set field to string type
R::store($participant);

R::freeze(true);

$participant->number = '99.99';
R::store($participant);

我知道这不是最好的,但是当你需要改变数据库结构时,你只需要打开它。基本上,在生产环境中,您应该始终将其关闭

RedBean将自动尝试为您提供的数据猜测正确的列类型。但是,它不会收缩列(例如从
文本
整数
),只会加宽(例如从
整数
文本

如果在开发过程中数据库列是
TEXT
这一点对您很重要,那么您可以插入
字符串
,然后再次删除它,以“欺骗”RedBean使列类型为
TEXT

例如,将此代码段放入某种类型的初始化脚本中:

$participant = R::dispense('participants'); 
$participant->number = 'not a number';
R::store($participant);
R::trash($participant);

// Column 'participants.number' is now of type TEXT
正如我前面提到的,RedBean永远不会将列收缩为
INTEGER
,即使您再也不会插入除数字字符串以外的任何内容

另一方面,如果它在开发过程中对您不重要,您可以在部署到生产环境之前冻结数据库,并在数据库管理器中将列类型手动更改为
TEXT

使用now number_格式($participant->number,0,,'')作为解决方案