Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.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红豆的属性保存到数据库_Php_Database_Orm_Redbean - Fatal编程技术网

不将php红豆的属性保存到数据库

不将php红豆的属性保存到数据库,php,database,orm,redbean,Php,Database,Orm,Redbean,我正在使用Redbean作为php应用程序的ORM 每个用户(这种情况下的员工)都必须有一个密码才能登录,我想我会为他们生成一个密码,这样他们就不必在表单中键入密码 显然,这意味着它们都必须有一个salt,并且存储的唯一密码应该是实际密码的散列值。因此,我必须将密码发送给用户(否则他们将不知道密码:D),因此必须将其作为对象的属性,而不将其保存到数据库中 模型中有一个生成密码的聪明地方,因此它基本上可以为每个新员工(用户)自行生成密码,因此我创建了这个模型: class Model_employ

我正在使用Redbean作为php应用程序的ORM

每个用户(这种情况下的员工)都必须有一个密码才能登录,我想我会为他们生成一个密码,这样他们就不必在表单中键入密码

显然,这意味着它们都必须有一个salt,并且存储的唯一密码应该是实际密码的散列值。因此,我必须将密码发送给用户(否则他们将不知道密码:D),因此必须将其作为对象的属性,而不将其保存到数据库中

模型中有一个生成密码的聪明地方,因此它基本上可以为每个新员工(用户)自行生成密码,因此我创建了这个模型:

class Model_employee extends RedBean_SimpleModel
{
  public function dispense()
  {
    $this->salt = cypher::getIV(32);
    $this->tempPassword = cypher::getIV(8);
    $this->password = md5($this->salt . $this->password);
  }

  public function update()
  {
    unset($this->tempPassword);
  }
}
dispense()
中的生成密码功能正常。
update()
应该在保存bean之前运行,所以它是这样的(如果我将属性设置为null,它将保存为null),但是,即使我取消设置tempPassword,它仍然会被保存(即使我将它存储为null,也会创建列)


基本上,问题可以归结为:如何去掉
tempPassword
属性,使其不保存到数据库?

事实证明,几天前,在

基本上,redbean不会存储任何类扩展的私有属性

当时的解决方案非常简单:

class Model_employee extends RedBean_SimpleModel
{
  private $tempPassword;
  public function dispense()
  {
    $this->salt = cypher::getIV(32);
    $this->tempPassword = cypher::getIV(8);
    $this->password = md5($this->salt . $this->password);
  }
}
这不会将密码存储在数据库中,也不会创建列。 当然,如果我想读取密码,我必须添加一个getter(),但是上面解决了直接的问题:)