понедельник, 21 июня 2010 г.

sfDoctrineGuardPlugin свои поля в таблице пользователей


sfDoctrineGuardPlugin - это плагин который реализует функционал авторизации и аутентификация пользователей.
Самый главный вопрос, который возникает у всех, кто пользуется этим плагином: "как дополнить схему юзеров своими полями?" Например, добавить телефон пользователя и т. п.


Создатели плагина предлагают решать проблему через отдельную табличку профилей пользователей.
sfGuardUserProfile:
  tableName: user_profiles
  columns:
    id:
      type: integer(4)
      primary: true
      autoincrement: true
    user_id:
      type: integer(4)
      notnull: true
    email:
      type: string(80)
      notnull: true
      email: true
    fullname: # ФИО
      type: string(80)
      notnull: true
    tel: # моб. телефон
      type: string(80)
      notnull: false
  relations:
    User:
      class: sfGuardUser
      foreign: id
      local: user_id
      type: one
      onDelete: cascade
      foreignType: one
      foreignAlias: Profile
  indexes:
    email:
      fields: [email]
      type: unique
т. е. создается еще один класс sfGuardUserProfile, который связан с основным классом sfGuardUser.
Вызывается оно так:
$profile = $user->getProfile();

Иногда это не всегда удобно. Что делать если мы хотим расширить sfGuardUser напрямую? Редактировать код плагина sfDoctrineGuardPlugin не самое лучшее решение. Выход есть.
Не все знают, что если в /config/doctrine/schema.yml прописать так
sfGuardUser: # расширем класс пользователя доп полями
  columns:
    customer_id:
      type: integer(4)
      notnull: false
  relations:
    Customer:
      local: customer_id
      foreign: id
      class: Customer
    BookmarkList:
      local: id
      foreign: user_id
      class: Bookmark
  indexes:
    customer:
      fields: [customer_id]
      sorting: ASC
то класс (табличку в бд) sfGuardUser будет расширен дополнительным полями и связями. В нашем случаи добавится поле "customer_id" и связи на соответствующие классы.
Удачи.

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

Отправить комментарий