PHP / MongoDB - bazı durumlar diğerlerinde Doktrin ODM Hidrat değil

oy
0

Bazı durumlarda hidrat beklenen değerleri döndürmez, Doktrin ODM yardıma ihtiyacım var. Ben örnek olarak proje üzerinde var ve bir koleksiyon için sorgulamak ve tüm hidrat ile ince çalışırken, bu işleri böyledir:

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;
}

Sorgu (İŞLER!)

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

Dönüş (içerik):

{
        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
        }
    }

Gördüğünüz gibi sonuç Etiketler değerleri ile geldi.

BURADA SORUN IS: UsersODM I sonucu UsersGrousODM değerlerini, sadece kimliği içermeyen belgeler için sorguladığınızda, burada kod şudur:

<?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;
}

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;
}

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

Dönüş:

{
    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
}

users_group_id alan users_group_name ve users_group_status içermez.

Oluştur 10/10/2019 saat 00:47
kaynak kullanıcı
Diğer dillerde...                            

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