我无法使用box()
方法,我只能从中获取NULL
。
例如,如果我这样做
$bean = \R::load('comment', 2);
print("\n\nBEAN:\n");
var_dump($bean);
$model = $bean->box();
print("\n\nMODEL:\n");
var_dump($model);
我明白了
BEAN:
class RedBeanPHP\OODBBean#68 (10) {
protected $properties =>
array(4) {
'id' =>
string(1) "2"
'user' =>
string(1) "2"
'reply_to' =>
NULL
'message' =>
string(30) "Test comment 1"
}
protected $__info =>
array(4) {
'type' =>
string(7) "comment"
'sys.id' =>
string(2) "id"
'sys.orig' =>
array(5) {
'id' =>
string(1) "2"
'user' =>
string(1) "1"
'reply_to' =>
NULL
'message' =>
string(30) "Test comment 1"
}
'tainted' =>
bool(false)
'changed' =>
bool(false)
}
protected $beanHelper =>
class RedBeanPHP\BeanHelper\SimpleFacadeBeanHelper#17 (0) {
}
protected $fetchType =>
NULL
protected $withSql =>
string(0) ""
protected $withParams =>
array(0) {
}
protected $aliasName =>
NULL
protected $via =>
NULL
protected $noLoad =>
bool(false)
protected $all =>
bool(false)
}
MODEL:
NULL
显然bean中有数据,为什么box()
会返回NULL
?
答案 0 :(得分:0)
似乎这是一个命名空间问题。
如果您希望模型驻留在名称空间\ Model中,可以设置以下常量:
//with namespace Model define( 'REDBEAN_MODEL_PREFIX', '\\Model\\' )
您现在可以创建一个这样的模型类:
class \Model\Band extends \RedBeanPHP\SimpleModel { ... }
短语“......你可以设置......”让我相信它是可选的。但是,事实证明,如果您希望模型驻留在名称空间\ Model中,并且您希望能够使用FUSE方法,那么必须设置上面的常量,并且必须< / strong>调用您的模型类Band
。
另外,请注意,当您定义该命名空间字符串时,必须在任何地方使用双反斜杠(\\
)。
为了增加混淆,就在上面的文档段落之前,有一段说
RedBeanPHP使用命名约定(即Model_ {TYPE OF BEAN})自动将bean与模型连接起来。
显然,当 NOT 使用命名空间时,你应该使用命名约定Model_Band
,当你这样做时,你应该使用命名约定Band
,或者事情发生。