I want to create a one-to-one relationship between users and
companies. Since I shouldn't be editing the sfDoctrineGuard schema's
directlyI've created a sfGuardUserProfile model:

sfGuardUserProfile:
  tableName:            sf_guard_user_profile
  columns:
    user_id:            { type: integer, notnull: true }
    org_id:             { type: integer, notnull: true }
  relations:
    sfGuardUser:        { onDelete: CASCADE, local: user_id, foreign:
id, foreignAlias: Profile, foreignType: one, type: one }
    Company:        { onDelete: CASCADE, local: org_id, foreign: id,
foreignAlias: sfGuardUserProfiles }


And my Company model has a relation like this:
  relations:
    sfGuardUser:
      foreignAlias: Company
      class: sfGuardUser
      local: id
      foreign: org_id
      refClass: sfGuardUserProfile
      foreignType: one

This appears to create all the correct models, the basesfGuardUser
model has:

        $this->hasOne('Company', array(
             'refClass' => 'sfGuardUserProfile',
             'local' => 'org_id',
             'foreign' => 'id'));


However, when I do:
$sf_user->getGuardUser()->getCompany();

it returns a collection rather than an object. The simple fix is to do
this:
$sf_user->getGuardUser()->getProfile()->getCompany();

(and refactor it into the sfGuardUser class)

I suspect that the refClass is what is causing this behaviour. Is this
intended? is there another way to create a one-to-one relationship as
I've described above? My solution works, but it feels wrong somehow.

Thanks


-- 
If you want to report a vulnerability issue on symfony, please send it to 
security at symfony-project.com

You received this message because you are subscribed to the Google
Groups "symfony users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/symfony-users?hl=en

Reply via email to