use Doctrine\ORM\Mapping as ORM;
/**
* User
*
* @ORM\Table(name="USUARIOS")
* @ORM\Entity
* @ORM\Entity(repositoryClass="Rangos\Entity\UserRepository")
*/
class User {
/**
* @var integer $userId
*
* @ORM\Column(name="USER_ID", type="integer", nullable=false)
* @ORM\Id
*/
private $userId;
/**
* @var \USUARIOS_IDENTIDADE
* @ORM\OneToOne(targetEntity="Rangos\Entity\UserIdentity")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="USER_ID", referencedColumnName="USER_I_USER")
* })
*/
private $userIdentity;
}
/**
* UserIdentity
*
* @ORM\Table(name="USUARIOS_IDENTIDADE")
* @ORM\Entity
* @ORM\Entity(repositoryClass="Rangos\Entity\UserIdentityRepository")
*/
class UserIdentity {
/**
* @var integer $userIId
*
* @ORM\Column(name="USER_I_ID", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $userIId;
/**
* @var \USUARIOS
* @ORM\GeneratedValue
* @ORM\Column(name="USER_I_USER", type="integer", nullable=false)
* @ORM\OneToOne(targetEntity="Rangos\Entity\User",
inversedBy="userIdentity")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="USER_I_USER", referencedColumnName="USER_ID")
* })
*/
private $userIUser;
}
$query = $this->getEntityManager()->createQueryBuilder();
$query->select('u', 'i')
->from('Rangos\Entity\User', 'u')
->leftJoin("u.userIdentity", 'i');
$result = $query->getQuery()->execute();
Em quinta-feira, 27 de fevereiro de 2014 06h15min23s UTC-3, João Carlos
Santa Ana escreveu:
>
> I think I solved the problem. I'll post the solution I found if it is not
> right or something is missing please tell.
>
> class User {
>
> /**
> * @var integer $userId
> *
> * @ORM\Column(name="USER_ID", type="integer", nullable=false)
> * @ORM\Id
> */
> private $userId;
>
>
> /**
> * @var \USUARIOS_IDENTIDADE
> * @ORM\OneToOne(targetEntity="Rangos\Entity\UserIdentity")
> * @ORM\JoinColumns({
> * @ORM\JoinColumn(name="USER_ID", referencedColumnName="USER_I_USER")
> * })
> */
> private $userIdentity;
> }
>
> class UserIdentity {
>
> /**
> * @var integer $userIId
> *
> * @ORM\Column(name="USER_I_ID", type="integer", nullable=false)
> * @ORM\Id
> * @ORM\GeneratedValue(strategy="IDENTITY")
> */
> private $userIId;
>
>
> /**
> * @var \USUARIOS
> * @ORM\GeneratedValue
> * @ORM\Column(name="USER_I_USER", type="integer", nullable=false)
> * @ORM\OneToOne(targetEntity="Rangos\Entity\User",
> inversedBy="userIdentity")
> * @ORM\JoinColumns({
> * @ORM\JoinColumn(name="USER_I_USER", referencedColumnName="USER_ID")
> * })
> */
> private $userIUser;
> }
>
> $query = $this->getEntityManager()->createQueryBuilder();
> $query->select('u', 'i')
> ->from('Rangos\Entity\User', 'u')
> ->leftJoin("u.userIdentity", 'i');
> $result = $query->getQuery()->execute();
>
>
>
> Agradeço pela ajuda.
>
>
> Em quinta-feira, 27 de fevereiro de 2014 04h45min40s UTC-3, Herman Peeren
> escreveu:
>>
>> On Wednesday, 26 February 2014 23:55:55 UTC+1, João Carlos Santa Ana
>> wrote:
>> can someone tell if this correct.
>>
>> No, sorry, it is not correct yet. Please reread the documentation and try
>> to understand *every *line of code you write.
>> It is good that you limited the problem to just one relation to start
>> with, the UserIdentity, and left the UserAddress out for a moment. Once you
>> get the principle you can add other objects to this User-aggregate.
>>
>> You are trying to make a User-entity that 'has a' UserIdentity; a
>> OneToOne association. Because it is a bidirectional relationship, you must
>> have some $userIdentity-field in your User. That field is lacking now. In
>> the annotation of that field you define the OneToOne-relationship. At the
>> other side, in the UserIdentity-entity you have a $user-field. Not a
>> userIId: that is irrelevant for the identity and only necessary as a
>> foreign key in the table. In the object UserIdentity you don't have a
>> userID, but a user. I would describe that relationship as: a UserIdentity
>> 'belongs to' a User. Or: a UserIdentity 'gives more information about' a
>> User.
>>
>> The $user you have in your UserIdentity is of the type User. Hence:
>> @ORM\var
>> \User, not @var \USARIOS (there is no \USARIOS-class). But you can also
>> leave that entire line out, as you are allready defining a targetEntity in
>> the association, so we know what type it is.
>>
>> BTW:I would take another name for User*Identity*, for it is a bit
>> confusing name, as it looks like UserID. You could for instance rename it
>> to UserProfile, UserDetails, UserInformation or maybe something more
>> informative and precise. This is THE chance to give it a good name, you'll
>> get clearer code every time you use those attributes later in your
>> application.
>>
>>
>>
>>
>>
>> On Wednesday, 26 February 2014 23:55:55 UTC+1, João Carlos Santa Ana
>> wrote:
>>>
>>> The closest I came to a possible solution can someone tell if this
>>> correct. If yes how to query from there?
>>>
>>> use Doctrine\ORM\Mapping as ORM;
>>>
>>> /**
>>> * User
>>> *
>>> * @ORM\Table(name="USUARIOS")
>>> * @ORM\Entity
>>> * @ORM\Entity(repositoryClass="Rangos\Entity\UserRepository")
>>> */
>>> class User {
>>>
>>> /**
>>> * @var integer $userId
>>> *
>>> * @ORM\Column(name="USER_ID", type="integer", nullable=false)
>>> * @ORM\Id
>>> * @ORM\GeneratedValue(strategy="IDENTITY")
>>> * @ORM\OneToOne(targetEntity="Rangos\Entity\UserIdentity")
>>> * @ORM\JoinColumns({
>>> * @ORM\JoinColumn(name="USER_ID",
>>> referencedColumnName="USER_I_USER")
>>> * })
>>> */
>>> private $userId;
>>>
>>> /**
>>> * @var integer $userEmp
>>> *
>>> * @ORM\Column(name="USER_EMP", type="integer", nullable=false)
>>> */
>>> private $userEmp;
>>> }
>>>
>>> use Doctrine\ORM\Mapping as ORM;
>>>
>>> /**
>>> * UserIdentity
>>> *
>>> * @ORM\Table(name="USUARIOS_IDENTIDADE")
>>> * @ORM\Entity
>>> * @ORM\Entity(repositoryClass="Rangos\Entity\UserIdentityRepository")
>>> */
>>> class UserIdentity {
>>>
>>> /**
>>> * @var integer $userIId
>>> *
>>> * @ORM\Column(name="USER_I_ID", type="integer", nullable=false)
>>> * @ORM\Id
>>> * @ORM\GeneratedValue(strategy="IDENTITY")
>>> */
>>> private $userIId;
>>>
>>>
>>> /**
>>> * @var \USUARIOS
>>> * @ORM\GeneratedValue
>>> * @ORM\OneToOne(targetEntity="Rangos\Entity\User",
>>> inversedBy="userIdentity")
>>> * @ORM\JoinColumns({
>>> * @ORM\JoinColumn(name="USER_I_USER",
>>> referencedColumnName="USER_ID")
>>> * })
>>> */
>>> private $userIUser;
>>>
>>> /**
>>> * @var string $userINome
>>> *
>>> * @ORM\Column(name="USER_I_NOME", type="string", length=40,
>>> nullable=false)
>>> */
>>> private $userINome;
>>>
>>> }
>>>
>>>
>>>
>>> Em quarta-feira, 26 de fevereiro de 2014 19h13min45s UTC-3, João Carlos
>>> Santa Ana escreveu:
>>>>
>>>> class User {
>>>>
>>>> /**
>>>> * @var integer $userId
>>>> *
>>>> * @ORM\Column(name="USER_ID", type="integer", nullable=false)
>>>> * @ORM\Id
>>>> * @ORM\GeneratedValue(strategy="IDENTITY")
>>>> */
>>>> private $userId;
>>>>
>>>> /**
>>>> * @ORM\OneToOne(targetEntity="Rangos\Entity\UserIdentity")
>>>> * @ORM\JoinColumns({
>>>> * @ORM\JoinColumn(name="userIdentity",
>>>> referencedColumnName="USER_I_USER")
>>>> * })
>>>> */
>>>> private $userIdentity;
>>>> }
>>>>
>>>> class UserIdentity {
>>>>
>>>> /**
>>>> * @var integer $userIId
>>>> *
>>>> * @ORM\Column(name="USER_I_ID", type="integer", nullable=false)
>>>> * @ORM\Id
>>>> * @ORM\GeneratedValue(strategy="IDENTITY")
>>>> */
>>>> private $userIId;
>>>>
>>>>
>>>> /**
>>>> * @var \USUARIOS
>>>> * @ORM\GeneratedValue
>>>> * @ORM\OneToOne(targetEntity="Rangos\Entity\User",
>>>> inversedBy="USER_ID")
>>>> * @ORM\JoinColumns({
>>>> * @ORM\JoinColumn(name="USER_I_USER",
>>>> referencedColumnName="USER_ID")
>>>> * })
>>>> */
>>>> private $userIUser;
>>>>
>>>> }
>>>>
>>>> PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column
>>>> 't0.userIdentity' in 'field list'
>>>>
>>>> Em quarta-feira, 26 de fevereiro de 2014 18h08min07s UTC-3, Marco
>>>> Pivetta escreveu:
>>>>>
>>>>>
>>>>>
>>>>> On 26 February 2014 21:53, João Carlos Santa Ana <[email protected]
>>>>> > wrote:
>>>>>
>>>>>> I do not believe to be 4 days to solve this :/.
>>>>>> keep getting an exception:
>>>>>>
>>>>>> AnnotationException: [Semantical Error] The annotation "@OneToOne"
>>>>>> in property Rangos\Entity\User::$userIdentity was never imported. Did
>>>>>> you
>>>>>> maybe forget to add a "use" statement for this annotation?
>>>>>>
>>>>>>
>>>>> You need to prefix the annotation with "ORM\", so it should be
>>>>> "@ORM\OneToOne"
>>>>>
>>>>> Read your exception messages carefully ;-)
>>>>>
>>>>> Marco Pivetta
>>>>>
>>>>> http://twitter.com/Ocramius
>>>>>
>>>>> http://ocramius.github.com/
>>>>>
>>>>
--
You received this message because you are subscribed to the Google Groups
"doctrine-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/doctrine-user.
For more options, visit https://groups.google.com/groups/opt_out.