RedBeanPHP:如何添加时间戳、唯一性和默认值?

RedBeanPHP: how to add timestamp, unique and default?

我正在使用最新的稳定版本,如果我必须更新到第 5 版,请告诉我。

<?php
$user = R::dispense('user');
$user->fname = 'man';
$user->lname = '00';
$user->setMeta("buildcommand.unique" , array($user->email='e@e.com'));
$user->pass = password_hash('password', PASSWORD_DEFAULT);

$user->gender=0; // I want this to have a default value of 0 if I don't insert anything
$user->verified=1;
$user->lastModified = date('Y-m-d G:i:s'); // I want this to be a timestamp, right now it's stored as datetime
$id= R::store($user);

lastModified 存储为日期时间。我希望 genderverified 的默认值为 0。我希望 email 是唯一的。

我尝试了在 Whosebug 上找到的所有解决方案,但没有任何效果

$user->setMeta("buildcommand.unique" , array(array('email')));

以及如何创建 blob 以及如何指定字段的长度?

要预设 bean 的值,您应该使用模型的分配方法 class。参见 https://redbeanphp.com/index.php?p=/models

例如,要预设 bean 属性,您可以像这样编写一个模型 class:

class Model_User extends RedBean_SimpleModel
{
    public function dispense()
    {
        $this->bean->gender = 0;
        $this->bean->verified = 1;
    }
}

要使电子邮件成为唯一属性,您不应使用 RB 元函数,而应将字段定义为数据库中的唯一。

RB 旨在让您在流动模式下处理业务逻辑,只要您的逻辑有效,您就可以选择冻结整个数据库或部分表,如此处所述https://redbeanphp.com/index.php?p=/fluid_and_frozen

如果 RedBean 在流畅模式下无法猜测您想要的数据类型,也建议您手动设置数据类型。