Отношения sfDoctrineGuardPlugin с sfDoctrineApplyPlugin (удаление и создание пользователей)

#symfony-1.4 #sfdoctrineguard #sfguard #symfony-plugins

#symfony-1.4 #sfdoctrineguard #sfguard #symfony-плагины

Вопрос:

Я использую symfony 1.4.11. Я использую sfDoctrineGuardPlugin и sfDoctrineApplyPlugin.Все работает нормально, но… В моем бэкэнде у меня есть список пользователей, где я могу управлять пользователями.Когда я создаю нового пользователя из серверной части, его профиль создается только в таблице sf_guard_user, или когда я удаляю пользователя из серверной части, его профиль удаляется только из таблицы sf_guard_user, , но он не удаляет его профиль из таблицы sf_guard_user_profile…Итак, как это исправить?Может быть, я что-то не так сделал в настройке обоих плагинов? Спасибо!

 sfGuardUserProfile:
  connection: doctrine
  tableName: sf_guard_user_profile
  columns:
    id:            { type: integer(4), primary: true, autoincrement: true }
    user_id:       { type: integer(4), notnull: true , primary: false }
    salutation:    { type: string(10), notnull: true }
    first_name:    { type: string(30), notnull: true }
    last_name:     { type: string(30), notnull: true }
    country:       { type: string(255), notnull: true }
    postcode:      { type: string(10) , notnull: true }
    city:          { type: string(255), notnull: true }
    address:       { type: string()   , notnull: true }
    phone:         { type: string(50) }
    email:         { type: string(255), notnull: true }
    validate:      { type: string(17) }
    banned:        { type: boolean, default: 0 }
    payed_until:   { type: datetime, notnull: true}
  relations:
    User:
      class: sfGuardUser
      foreign: id
      local: user_id
      type: one
      onDelete: cascade
      foreignType: one
      foreignAlias: Profile
  

Ответ №1:

Просто измените мою базу данных с MyISAM на INNODB, и все будет работать нормально!

Ответ №2:

О создании нового пользователя — я не уверен, есть ли такая функция в обоих плагинах в первую очередь. (По крайней мере, я об этом не знаю).

По поводу удаления пользователя и связанных с ним данных из таблицы sf_guard_user_profile — я думаю, что, скорее всего, есть какая-то проблема с определением отношений. Проверьте sfDoctrineApplyPlugin readme еще раз в разделе установки, где определена таблица sf_guard_user_profile. Для пользовательского отношения необходимо установить OnDelete: cascade.

И в конце проверьте, был ли сгенерирован правильный sql и применен ли он к схеме базы данных.

С уважением.

Комментарии:

1. Я добавляю свою схему… Я пытаюсь использовать этот метод, но он добавляет все данные, но user_id = 0 ((

2. Пожалуйста, объясните, чего вы пытаетесь достичь? Поскольку функциональность sfDoctrineApplyPlugin и модуля Profile , описанного по ссылке в вашем комментарии, отличается: — sfDoctrineApplyPlugin позволяет пользователям сайта создавать / запрашивать новые учетные записи. — Модель профиля создается и связана с sfDoctrineGuardPlugin для включения некоторой дополнительной информации.

3. @ Mihail Dimitrov У меня есть sfDoctrineApplyPlugin , пользователи могут регистрироваться на сайте, у каждого из них есть собственный профиль. sfDoctrineApplyPlugin используется для таблицы учетных записей sf_guard_user_profile , но я также хочу иметь возможность добавлять / редактировать учетные записи пользователей из серверной части. И этот метод работает, я могу редактировать информацию профиля пользователя и создавать новых пользователей. Теперь у меня две проблемы … 1. Когда я добавляю пользователя из серверной части, user_id = 0. 2. Когда я удаляю пользователя из серверной части, его профиль в sf_guard_user_profile не удаляется.