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.

Reply via email to