在RedBeanPHP中是否可能故意严格使用表结构?

时间:2012-04-12 10:22:03

标签: php redbean

我真的很喜欢RedBeanPHP的概念。在开发中,人们不必担心使用数据库,RedBean会为您完成所有工作。这些表在你工作时形成,当你对表感到满意时,你就会冻结它们。我看到的唯一问题是当您将项目移动到新系统时。 ORM的一个重要部分是数据库表是从PHP模型创建的,这意味着您不必经常导出数据库结构以保证其安全。我不知道如何使用RedBean来实现这一点,因为它在使用可变数据重复使用随着时间的推移后形成表结构。

我意识到事先定义表的结构有点削弱了首先使用RedBean的意义,但我至少希望在“动态模式”中使用RedBean之后在PHP中定义数据库的结构。开发,以便在系统之间移动项目不会那么痛苦。

我希望我能够明确表达我的担忧,让那些与RedBeanPHP合作并且可能在此之前遇到过这个问题的人得到了解决。

由于

3 个答案:

答案 0 :(得分:2)

刚刚发现你可以使用元数据来强制RedBean中的类型:

$bean->setMeta('cast.myproperty', 'text');

在此处找到:http://redbeanphp.com/extra/meta_data

答案 1 :(得分:1)

可以扩展R::freeze方法来创建一个空的sqlite数据库,并使用R::syncSchema来填充结构。然后在生产中,任务可以使用相同的方法来反转过程。

答案 2 :(得分:0)

我还没有执行它但我的想法是创建一个使用FUSE加载所有bean类型的迁移脚本,并迭代创建一个bean,每个bean类型都有假数据(基于bean的元数据信息)并存储它。这将基于模型重新创建表结构,然后脚本将截断表并将生产数据导入其中。

不是很优雅,因为你需要在模型中的某个地方声明数据库结构,但是零配置是不可能实现的。