PHP / MongoDB - Dottrina ODM Hydrate in alcuni casi, altri no

voti
0

Ho bisogno di aiuto in Dottrina ODM, in alcuni casi, l'idrato non restituiscono i valori previsti. Ho in progetto come esempio e quando interrogo per una collezione e tutto il lavoro bene con idrato, questo è il caso che funziona:

ProductsCollection:

<?php
namespace MongodbManager\Documents;
use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;
use Doctrine\Common\Collections\ArrayCollection;
/** @ODM\Document */
class ProductsODM
{
    /** @ODM\Id */
    public $id;
    /** @ODM\Field(type=string) */
    public $name;
   /** @ODM\Field(type=float) */
   public $price;
   /** @ODM\Field(type=date) */
   public $date;
   /** @ODM\EmbedMany(targetDocument=CategoriesODM::class) */
   public $categories;
   /** @ODM\ReferenceMany(targetDocument=TagsODM::class, storeAs=id) */
   public $tags;
   /** @ODM\ReferenceOne(targetDocument=TagsODM::class, storeAs=id) */
   public $tagsPrimary;
   public function __construct()
   {
       $this->categories = new ArrayCollection();
   }
}

TagsCollection

 <?php
 namespace MongodbManager\Documents;
 use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;
 /** @ODM\Document */
class TagsODM
{
    /** @ODM\Id */
    public $id;
    /** @ODM\Field(type=string) */
    public $name;
}

Query (funziona!)

$this->dm->createQueryBuilder(ProductsODM::class)->hydrate(true)->getQuery()->execute();

Return (contenuto):

{
        id: 5d9e23b32b251b2fc7438d14,
        name: Martini 1570644915,
        price: 5.99,
        date: {
            date: 2019-10-09 15:15:15.000000,
            timezone_type: 3,
            timezone: America/Sao_Paulo
        },
        categories: [
            {
                id: 5d9e23b32b251b2fc7438d15,
                name: bar
            },
            {
                id: 5d9e23b32b251b2fc7438d16,
                name: night
            }
        ],
        tags: [
            {
                id: 5d9dde11982e830950453618,
                name: COMIDA
            },
            {
                id: 5d9dde11982e830950453619,
                name: BEBIDA
            }
        ],
        tagsPrimary: {
            id: 5d9dde11982e830950453618,
            name: COMIDA
        }
    }

Come si può vedere il risultato è venuto con valori Tag.

Qui è il problema: nel UsersODM quando interrogo per i documenti non comprendono i valori del UsersGrousODM nel risultato, solo l'id, ecco il codice:

<?php
namespace MongodbManager\Documents;
use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;
/** @ODM\Document */
class UsersODM
{
    /** @ODM\Id */
    public $id;
    /** @ODM\Field(type=string) */
    public $users_login_code;
    /** @ODM\Field(type=string) */
    public $users_username;
    /** @ODM\Field(type=string) */
    public $users_password;
    /** @ODM\Field(type=string) */
    public $users_status;
    /** @ODM\Field(type=date) */
    public $users_update_date;
    /** @ODM\ReferenceOne(targetDocument=UsersGroupODM::class, storeAs=id) **/
    public $users_group_id;
}

L'UsersGroupODM

<?php
namespace MongodbManager\Documents;
use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;
/** @ODM\Document */
class UsersGroupODM
{
    /** @ODM\Id */
    public $id;
    /** @ODM\Field(type=string) */
    public $users_group_name;
    /** @ODM\Field(type=string) */
    public $users_group_status;
}

Il Query: $this->dm->createQueryBuilder(UsersODM::class)hydrate(true)->getQuery()->execute();

Ritorno:

{
    id: 5d9e2b0991055769a44078c6,
    users_login_code: null,
    users_username: webmaster,
    users_password: d68b87ecdf82164583816f1306f4c342ba57ad3e......,
    users_status: active,
    users_update_date: {
        date: 2019-10-09 15:46:33.000000,
        timezone_type: 3,
        timezone: America/Sao_Paulo
    },
    users_group_id: {
        id: 5d9e289358063a6594142cbc
    },
    users_info: null
}

l'users_group_id non comprendono l'users_group_name campo e users_group_status.

È pubblicato 10/10/2019 alle 00:47
fonte dall'utente
In altre lingue...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more