从bean拆箱模型时RedBean返回null?
Posted
技术标签:
【中文标题】从bean拆箱模型时RedBean返回null?【英文标题】:RedBean returns null when unboxing model from bean? 【发布时间】:2017-01-31 04:37:38 【问题描述】:我无法让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
?
【问题讨论】:
【参考方案1】:似乎是命名空间问题。
documentation 这么说
如果您希望模型驻留在命名空间 \Model 中,您可以设置以下常量:
//with namespace Model define( 'REDBEAN_MODEL_PREFIX', '\\Model\\' )
您现在可以像这样创建模型类:
class \Model\Band extends \RedBeanPHP\SimpleModel ...
短语“...你可以设置...”让我相信它是可选的。然而,事实证明,如果您希望您的模型驻留在命名空间 \Model 中,并且您希望能够使用 FUSE 方法,您必须设置上述常量并且您必须 调用你的模型类Band
。
另外,请注意,当您定义该命名空间字符串时,您必须在任何地方都使用双反斜杠 (\\
)。
为了增加混乱,在上述文档段落之前,有一段说
RedBeanPHP 使用命名约定(即 Model_TYPE OF BEAN)自动将 bean 与模型连接起来。
显然,当你不使用命名空间时,你应该使用命名约定Model_Band
,而当你这样做时,你应该使用命名约定Band
,否则事情就会崩溃。
【讨论】:
以上是关于从bean拆箱模型时RedBean返回null?的主要内容,如果未能解决你的问题,请参考以下文章