动态设置class数组参数,redbeanphp wrapper
Dynamically set class array parameter, redbeanphp wrapper
我正在为 redbeanphp orm 写一个包装器,
基本上不用
$user = R::dispense('users');
$user->name = 'Zigi marx';
R::store($user);
我喜欢
$user = new User();
$user->name = 'Zigi marx';
$user->save();
这样做的方法是,
我有一个名为 User 的 class 扩展模型
模型运行 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;
我收到这个错误
Notice: Indirect modification of overloaded property
Zigi\models\User::$ownBooks has no effect
答案:
__get 模型中的函数需要像这样更改
public function & __get($name){
$result =& $this->__bean->{$name};
return $result;
}
您的 __get
方法是按值 returning bean 属性,因此您不能在之后修改它。要修复它,您需要通过引用 return 它 (see PHP manual),方法是在您的方法定义中添加 &
,如下所示:
public function & __get($name){
$result =& $this->__bean->$name;
return $result;
}
我正在为 redbeanphp orm 写一个包装器,
基本上不用
$user = R::dispense('users');
$user->name = 'Zigi marx';
R::store($user);
我喜欢
$user = new User();
$user->name = 'Zigi marx';
$user->save();
这样做的方法是, 我有一个名为 User 的 class 扩展模型 模型运行 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;
我收到这个错误
Notice: Indirect modification of overloaded property Zigi\models\User::$ownBooks has no effect
答案: __get 模型中的函数需要像这样更改
public function & __get($name){
$result =& $this->__bean->{$name};
return $result;
}
您的 __get
方法是按值 returning bean 属性,因此您不能在之后修改它。要修复它,您需要通过引用 return 它 (see PHP manual),方法是在您的方法定义中添加 &
,如下所示:
public function & __get($name){
$result =& $this->__bean->$name;
return $result;
}