【问题标题】:how to change type of column using redbean?如何使用redbean更改列的类型?
【发布时间】:2015-07-02 09:40:43
【问题描述】:

我正在使用 redbeanphp 进行数据库操作。我使用此代码创建一个表并在我的数据库中添加一行:

$bean= R::dispence("esate") ; 
$bean->import(json_decode($data)) ; 
R::store($bean); 

在我的 $data 变量中,我有空属性 例如地址,当 redbeanphp 将此 bean 存储在数据库中时,将此属性类型设置为 tinyint或其他类型。 现在,当我创建另一个具有 address 属性 mysql 的 bean 时,忽略我的值并将 address 列留空。

redbean 可以处理这个问题吗?如果答案是 YES 怎么办?

【问题讨论】:

  • 您可以随时编辑数据库架构以获得您想要的格式。 redbeanPHP 不会改变它,除非它必须。我也倾向于将 FUSEd 模型与 redbeanPHP 一起使用,因此我始终可以通过使用 'dispense' 方法确保所有 bean 属性都有有用的默认值。
  • 你的评论很有用.....谢谢亲爱的瑞安

标签: php mysql redbean


【解决方案1】:

试试这个

$book->title = 'Learn to fly';
$book->rating = 'good';
$book->published = '2015-02-15';
R::store( $book );

【讨论】:

  • 我现在使用这种方法,但我不会使用它,因为我的表有更多的列,这对我来说是不可能的
  • 嗯,这是我知道的唯一一个。试试其他语言?
  • 什么???另一种语言????你在跟我开玩笑吗?我用 php 创建了整个项目,现在更改我的语言?无论如何感谢您的建议:D
  • 您不必更改整个语言。 :) 您可以在代码中插入另一种语言。
  • 没关系,我希望我能帮助你。浏览互联网,也许你能找到一些东西。
【解决方案2】:

动态调整数据库模式是 RedBean 的核心功能,所以你的问题真的很令人惊讶。

见:

$foo = R::dispense('foo');
$foo->import(array(
    'address' => null,
));
$id = R::store($foo);

$bar = R::dispense('foo');
$bar->import(array(
    'address' => 'baz',
));
$id2 = R::store($bar);

var_dump(R::load('foo', $id)->export());

var_dump(R::load('foo', $id2)->export());

输出:

array(2) {
  ["id"]=>
  string(1) "1"
  ["address"]=>
  NULL
}
array(2) {
  ["id"]=>
  string(1) "2"
  ["address"]=>
  string(3) "baz"
}

你没有什么可做的让它工作......所以问题是你做了什么让它工作?特别是,您确定您的数据库还没有frozen

【讨论】:

  • 亲爱的 rixo 我的数据库根本没有冻结...当我为“地址”创建一个具有空值的行时,它会创建一个具有 tinytext 数据类型的列,当我添加另一行具有长地址时它不会在数据库中保存地址 col 的值
  • 将您的实际代码和数据添加到您的问题中,您的代码中很可能存在您没有看到的问题......而不是像我的示例那样在 RedBean 中按预期工作显示。
猜你喜欢
  • 1970-01-01
  • 2012-08-27
  • 2016-09-04
  • 2021-05-19
  • 1970-01-01
  • 1970-01-01
  • 2021-12-04
  • 1970-01-01
  • 2021-01-09
相关资源
最近更新 更多