🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.php
4 messages
4 total messages Started by Replay Sun, 21 Dec 2014 17:23
doctrine2 - findall i @OneToOne
#230806
Author: Replay
Date: Sun, 21 Dec 2014 17:23
142 lines
3697 bytes
Witam,

utworzyłem sobie takie dwie proste encje:


/**
 * @Entity
 *
@Table(name="sys_users",uniqueConstraints={@UniqueConstraint(name="login_idx",
columns={"login"}),@UniqueConstraint(name="email_idx", columns={"email"})})
 * */
class SysUser extends Base{


    /**
     * @Column(type="text", nullable=false)
     */
    public $login;

    /**
     * @Column(type="text", nullable=false)
     */
    public $passwd;


    /**
     * @Column(type="text", nullable=false)
     */
    public $email;

    /**
     * @Column(type="text", nullable=false, options={"default" = "USER"})
     */
    public $rola;

    /**
     * @Column(type="integer", nullable=true,options={"default" = -1})
     */
    public $fkstatuspm;

    /**
     * @Column(type="datetime", nullable=true)
     */
    public $dtstatus;

    /**
     * @OneToOne(targetEntity="OsOsoba")
     * @JoinColumn(name="fk_osobapm", referencedColumnName="pm")
     */
    public $osOsoba;

    public function getOsoba(){
    	return $this->osOsoba;
    }


}


/**
 * @Entity
 * @Table(name="os_osoby")
 */
class OsOsoba extends Base {
	
	/**
	 * @Column(type="text", nullable=false)
	 */
	public $imie;
	
	/**
	 * @Column(type="text", nullable=false)
	 */
	public $nazwisko;
	
	/**
	 * @Column(type="integer", nullable=false)
	 */
	public $fkprzelozonypm;
	
	//
	public function getOsobaName() {
		return $this->nazwisko . " " . $this->imie;
	}
}



Zapisałem do bazy dane:

        $osoba = new \app\libs\Entity\OsOsoba ();
        $osoba->nazwisko = "Kowalski";
        $osoba->imie = "Jan";
        $osoba->fkprzelozonypm = - 1;

        $user = new \app\libs\Entity\SysUser ();
        $user->login = "maciej";
        $user->passwd = md5 ( "1" );
        $user->email = "jk@mail.com";
        $user->rola = "001";
        $user->dtstatus = new DateTime ();
        $user->osOsoba = $osoba;

        $em->persist ( $user );
        $em->persist ( $osoba );
        $em->flush ();



        $osoba = new \app\libs\Entity\OsOsoba ();
        $osoba->nazwisko = "Kowalski";
        $osoba->imie = "Andrzej";
        $osoba->fkprzelozonypm = - 1;

        $user = new \app\libs\Entity\SysUser ();
        $user->login = "maciej";
        $user->passwd = md5 ( "1" );
        $user->email = "ak@mail.com";
        $user->rola = "099";
        $user->dtstatus = new DateTime ();
        $user->osOsoba = $osoba;

        $em->persist ( $user );
        $em->persist ( $osoba );
        $em->flush ();


I teraz gdy chce pobrać dane w taki oto sposób (osobny skrypt):

$repo = $em->getRepository('app\libs\Entity\SysUser');
try {
        $q = $repo->findAll();
}

var_dump($q);

Skrypt się zapętla i kończy pracę (chce więcej pamięci niż może)...

Czy ktoś może mnie naprowadzić co robię w niewłaściwy sposób?


Dziękuję za pomoc :D
Re: doctrine2 - findall i @OneToOne
#230807
Author: ww
Date: Sun, 21 Dec 2014 21:17
24 lines
1967 bytes
On 2014-12-21 18:23, Replay wrote:
>          $osoba = new \app\libs\Entity\OsOsoba ();
>          $osoba->nazwisko = "Kowalski";
>          $osoba->imie = "Jan";
>          $osoba->fkprzelozonypm = - 1;
>
>          $user = new \app\libs\Entity\SysUser ();
>          $user->login = "maciej";
>          $user->passwd = md5 ( "1" );
>          $user->email = "jk@mail.com";
>          $user->rola = "001";
>          $user->dtstatus = new DateTime ();
>          $user->osOsoba = $osoba;
>
>          $em->persist ( $user );
>          $em->persist ( $osoba );
>          $em->flush ();
Kompletnie nie pomogę ale zastanawiam się jak to wygląda w bazie (czy 
identyfikatory powiązanych obiektórych
są poprawne). Moim zdaniem najpierw należałoby zapisać obiekt $osoba a 
potem $user. Tak jest w przykładach na
stronie symfony i tak by było logiczniej. Chyba, że zapisanie $user 
wymusza zapisanie $osoba lub ten system sam
sobie potrafi jakoś ustawić  co ma zapisać jako pierwsze.
Re:doctrine2 - findall i @OneToOne
#230808
Author: fela
Date: Sun, 21 Dec 2014 22:17
27 lines
1436 bytes
Replay <replay111@o2.pl> Wrote in message:
> 
> I teraz gdy chce pobrać dane w taki oto sposób (osobny skrypt):
> 
> $repo = $em->getRepository('app\libs\Entity\SysUser');
> try {
>         $q = $repo->findAll();
> }
> 
> var_dump($q);
> 
> Skrypt się zapętla i kończy pracę (chce więcej pamięci niż może)...
> 
> Czy ktoś może mnie naprowadzić co robię w niewłaściwy sposób?
> 
> 

A czy bez var_dumpa też się zapętla, bo doctrine ma swojego dumpa,
 bez rekurencji.

A czy można używać try bez catcha?



-- 

marcin
[SOLVED] Re: doctrine2 - findall i @OneToOne
#230809
Author: Replay
Date: Mon, 22 Dec 2014 20:39
39 lines
1970 bytes
W dniu 2014-12-21 o 23:17, fela pisze:
> Replay <replay111@o2.pl> Wrote in message:
>>
>> I teraz gdy chce pobrać dane w taki oto sposób (osobny skrypt):
>>
>> $repo = $em->getRepository('app\libs\Entity\SysUser');
>> try {
>>         $q = $repo->findAll();
>> }
>>
>> var_dump($q);
>>
>> Skrypt się zapętla i kończy pracę (chce więcej pamięci niż może)...
>>
>> Czy ktoś może mnie naprowadzić co robię w niewłaściwy sposób?
>>
>>
> 
> A czy bez var_dumpa też się zapętla, bo doctrine ma swojego dumpa,
>  bez rekurencji.
> 
> A czy można używać try bez catcha?
> 
> 
> 


Cześć!

Masz absolutną rację... czytałem o tym i uciekło mi totalnie z pamięci!
A przecież sam select z poziomu mojego kodu bez wywalania danych na
konoslę działa. Mam tak zrobione logowanie do systemu i działa!
Dla test zamieniłem var_dump'a na var_export'a i wszystko w konsoli
teraz się wyświetla poprawnie. Zaraz poczytam w dokumentacji jak
skorzystać poprawnie z doctrine'owego var_dumpa!

Dzięki za pomoc!

replay.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads