我正在构建一个部分基于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吗?
答案 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
}
希望能让你指出正确的方向。