2017-01-31 2 views
0

Je n'arrive pas à faire fonctionner la méthode box(), je ne reçois que NULL.RedBean renvoie la valeur null lors du déballage du modèle du bean?

Par exemple, si je fais ce

$bean = \R::load('comment', 2); 

print("\n\nBEAN:\n"); 
var_dump($bean); 

$model = $bean->box(); 

print("\n\nMODEL:\n"); 
var_dump($model); 

Je reçois ce

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 

De toute évidence, il existe des données dans la fève, alors pourquoi ne box() retour NULL?

Répondre

0

Semble que c'était un problème d'espace de noms.

Le documentation dit que

Si vous aimez vos modèles résideront dans l'espace de noms \ modèle, vous pouvez définir la constante suivante:

//with namespace Model 
    define('REDBEAN_MODEL_PREFIX', '\\Model\\') 

Vous pouvez maintenant créer une classe de modèle comme celui-ci :

class \Model\Band extends \RedBeanPHP\SimpleModel { ... } 

Le phrasé » ... vous peut ensemble ... "m'a amené à croire que c'est facultatif. Cependant, il s'avère que si vous aimez que vos modèles résident dans l'espace de nommage \ Modèle, et que vous voulez utiliser les méthodes FUSE, DOIT définir la constante ci-dessus et DOIT appeler votre classe de modèle Band.

Notez également que DOIT utiliser des doubles-barres obliques inverses (\\) partout lorsque vous définissez cette chaîne d'espace de noms.

 

Pour ajouter à la confusion, juste avant le paragraphe documentation ci-dessus, il y a un paragraphe disant

RedBeanPHP se connecte automatiquement les haricots avec des modèles en utilisant une convention de nommage (c.-à-Model_ {TYPE DE BEAN }).

Apparemment, vous devez utiliser la convention de nommage Model_Band lorsque PAS en utilisant les espaces de noms, et la convention de nommage Band lorsque vous faites ou les choses se décomposer.