1

我正在构建一个部分基于 CakePHP 并使用 RedBeanPHP 的自定义 MVC 框架。

现在我正在创建 DB CRUD。这是我的想法:

class Model extends RedBean_SimpleModel {

}


class Product extends Model {

var $beans = array(
'name',
'price',
...
);
}

这似乎是让 RedBeanPHP 动态生成表“Products”和列的好方法。

现在我目前的疑问(因为我开始工作并了解 RedBeanPHP)问题是关联。

我真的很喜欢CakePHP 的方法,有“hasOne”、“hasMany”、“belongsTo”等。

有人可以指导我使用 RedBeanPHP 的方法吗?

4

2 回答 2

1

无需使用 RedBeanPHP 的前期模型。RedBeanPHP 可以使用称为 FUSE 的系统为您自动连接您的 bean。这样可以节省很多代码。而且...更少的代码==更少的错误

$p = R::dispense('product');
$p->price = -6; //not a valid price
R::store($p);

稍后您要添加验证并编写:

class Model_Product extends RedBean_SimpleModel {
    public function update() {
        if ($this->price < 0) throw new Exception('Price cant be negative!');
    ...}
}

RedBeanPHP 会将产品 bean $p 与您的域模型中的模型 Model_Product 连接起来。您还可以添加新方法并使用 bean 调用它们:

$p->play(); //-- will call play() on Model_Product

阅读有关保险丝的更多信息:

http://www.redbeanphp.com/how_fuse_works

希望这可以帮助。

于 2013-03-26T22:57:36.727 回答
0

您可以与 redbean 建立关系。

$child->parent=$parentBean; // parent relationship
$child->ownToy=array($toybean1,$toybean2); // 1 to many relationship
$child->sharedToy=array($toybean1,$toybean2); // many to many relationship

所以现在的问题是,你将如何实现它?你可以有类似的东西:

var $relations=array(
    'fieldname'=>array('hasMany','names')
);

然后,当您处理保存时,只需确保您调用了正确的函数:

if(array_key_exists('fieldname',$this->relations)){
//magic happens
}

希望这能让你指出正确的方向。

于 2013-03-26T16:48:24.540 回答