Thread View: pl.comp.lang.php
4 messages
4 total messages
Started by Replay
Sun, 21 Dec 2014 17:23
doctrine2 - findall i @OneToOne
Author: Replay
Date: Sun, 21 Dec 2014 17:23
Date: Sun, 21 Dec 2014 17:23
142 lines
3697 bytes
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
Author: ww
Date: Sun, 21 Dec 2014 21:17
Date: Sun, 21 Dec 2014 21:17
24 lines
1967 bytes
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
Author: fela
Date: Sun, 21 Dec 2014 22:17
Date: Sun, 21 Dec 2014 22:17
27 lines
1436 bytes
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
Author: Replay
Date: Mon, 22 Dec 2014 20:39
Date: Mon, 22 Dec 2014 20:39
39 lines
1970 bytes
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