PHP MVC模型和RedBeanPHP - 关联

时间:2013-03-26 00:33:51

标签: php activerecord redbean

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

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

class Model extends RedBean_SimpleModel {

}


class Product extends Model {

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

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

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

我非常喜欢CakePHP's方法,“hasOne”,“hasMany”,“belongsTo”等等。

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

2 个答案:

答案 0 :(得分: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

了解有关Fuse的更多信息:

http://www.redbeanphp.com/how_fuse_works

希望这有帮助。

答案 1 :(得分: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
}

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