【问题标题】:Extend sfGuardUser : adding "phone number" field扩展 sfGuardUser:添加“电话号码”字段
【发布时间】:2011-11-15 07:45:21
【问题描述】:

教义 1.2 // SYMFONY 1.4

嗨! 在我的网站上,我将sfGuardPlugin 的表与其他表一起使用以设置警报系统,应用程序获取用户邮件以获取邮件并发送电子邮件, 现在我还需要一个用于发送短信的电话号码! 我所需要的只是sfGuardUser'表中的一个额外字段(“phone”), 我一直想知道我是否可以用“inheritence”来做到这一点,但我被困在类型中(简单,具体?...) 有什么想法吗?

【问题讨论】:

    标签: php symfony1 doctrine symfony-1.4 doctrine-1.2


    【解决方案1】:

    为什么不使用 sf_guard_user_profile 表来添加自定义字段?这是推荐的方法。

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

    那么你可以使用:

    $this->getUser()->getGuardUser()->getProfile()->getPhone()
    

    $this->getUser()->getProfile()->getPhone()
    

    无论如何,如果您想/需要“扩展” sfGuardUser,您必须修改插件 schema.yml,添加您的字段并重建所有类。我劝你不要。 ;-)

    【讨论】:

    【解决方案2】:

    我不确定您是否在简单地在数据库/模型中创建字段时遇到问题。如果是这样的话:

    例如 - 如果你在 schema.yml 文件中定义你的表,你基本上可以这样做:

    sfGuardUser:
      columns:
        somecolumn:
          type: string
    

    只需指定 sfGuardUser,因为它是一个新的、不存在的类并添加您的字段。另一种(在某些情况下更好)的方法是为配置文件字段创建一个新表并使用 sfGuardUser id 作为外键。

    如果问题出在其他方面,请告诉我。

    【讨论】:

    • 我已经通过使用继承解决了这个问题:输入简单并添加我的字段!无论如何谢谢!
    【解决方案3】:

    我已经通过使用继承解决了这个问题:输入简单并添加我的字段!不管怎么说,还是要谢谢你 !

    Myuser:
      inheritance:
        extends: sfGuardUser
        type: simple
      columns:
        gsm:
          type: string(30)
    

    这样“gsm”字段将出现在 sfGuardUser 表中并由插件自动管理(我不必使用 MyUser)

    我现在可以通过使用 getGsm() ....from sfGuardUser 对象来获取电话号码! 谢谢大家!

    【讨论】:

      猜你喜欢
      • 2014-10-24
      • 1970-01-01
      • 1970-01-01
      • 2020-12-10
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 2018-05-23
      相关资源
      最近更新 更多