2011-01-17 4 views
0

я установил sfGuardPlugin и создал эту модель:связь один к одному в sf1.4/продвинет

propel: 
    sf_guard_user_profile: 
    _attributes:  { phpName: sfGuardUserProfile } 
    id:    ~ 
    user_id:   { type: integer, foreignTable: sf_guard_user, foreignReference: id, required: true, onDelete: cascade } 
    name:    varchar(50) 

Как написано здесь, http://www.propelorm.org/wiki/Documentation/1.4/Relationships (см «один к одному» отношения), это предполагается, Symfony создает функцию sfGuardUser->getSfGuardUserProfile() и sfGuardUserProfile->getSfGuardUser(), но у меня есть этот код:

// this works 
    $c1 = new Criteria(); 
    $elements = sfGuardUserProfilePeer::doSelect($c1); 
    var_dump($elements[0]->getSfGuardUser()); 

    // this doesn't work 
    $c2 = new Criteria(); 
    $elements = sfGuardUserPeer::doSelect($c2); 
    var_dump($elements[0]->getSfGuardUserProfile()); 

и он не работает. Он говорит:

Призыв к неопределенному методу BasesfGuardUser :: getSfGuardUserProfile

SF 1,4/1,4 продвинет

Хавьер

+0

с этой страницы: «отношения один-к-одному, определяется, когда первичный ключ также внешний ключ »- я что-то упускаю, или ваш внешний ключ не является первичным ключом? –

ответ

2

user_id поле в sfGuardProfile должно быть первичным ключом, поэтому движение будет рассматривать это как отношение «один к одному».

propel: 
    sf_guard_user_profile: 
    _attributes:  { phpName: sfGuardUserProfile } 
    user_id:   { type: integer, foreignTable: sf_guard_user, foreignReference: id, required: true, onDelete: cascade, primary: true } 
    name:    varchar(50) 

как ваш sfGuardUserProfile является отношением один-ко-многим с sfGuardUser, поэтому метод getSfGuardUserProfile() не существует, метод, который действительно существует в sfGuardUserProfiles() (единственное различие является «s 'в имени метода, и это приведет массив профиля пользователя)

PS: извините за мой плохой английский: D

+0

Спасибо, для меня работал «primaryKey: true», а не «primary: true». Я использую Propel 1.5. – ziiweb