我正在为redbeanphp orm写一个包装器,
基本上不是使用
$user = R::dispense('users');
$user->name = 'Zigi marx';
R::store($user);
我喜欢这样
$user = new User();
$user->name = 'Zigi marx';
$user->save();
这样做的方式是, 我有一个名为User的类,它扩展了模型 和模型运行Redbeanphp
我的模型的完整代码可以在这里找到 http://textuploader.com/bxon
我的问题是当我尝试设置一对多的关系时, 在redbean中它是这样完成的
$user = R::dispense('users');
$user->name = 'Zigi marx';
$book = R::dispense('books');
$book->name = 'Lord of the rings II';
$user->ownBooks[] = $book;
并在我的代码中
$user = new User();
$user->name = 'Zigi marx';
$book = new Book();
$book->name = 'Lord of the rings II';
$user->ownBooks[] = $book;
我收到此错误
注意:间接修改重载属性 Zigi \ models \ User :: $ ownBooks无效
答案: 模型中的__get函数需要像这样改变
public function & __get($name){
$result =& $this->__bean->{$name};
return $result;
}
答案 0 :(得分:0)
您的__get
方法按值返回bean属性,因此您无法在以后修改它。要修复它,您需要通过引用(see PHP manual)返回它,方法定义中添加&
,如下所示:
public function & __get($name){
$result =& $this->__bean->$name;
return $result;
}