Symfony1 sfGuardUser表是否有主键?

Symfony1 sfGuardUser表是否有主键?,symfony1,doctrine,Symfony1,Doctrine,我是Symfony和Doctrine的新手,正在编写一个web应用程序。我将sfDoctrineGuardPlugin添加到我的项目中。当我打开插件的schema.yml文件时,我看到: sfGuardUser: actAs: [Timestampable] columns: first_name: string(255) last_name: string(255) email_address: type: string(255) notnull: true

我是Symfony和Doctrine的新手,正在编写一个web应用程序。我将sfDoctrineGuardPlugin添加到我的项目中。当我打开插件的schema.yml文件时,我看到:

sfGuardUser:
actAs: [Timestampable]
columns:
  first_name: string(255)
  last_name: string(255)
  email_address:
    type: string(255)
    notnull: true
    unique: true
  username:
    type: string(128)
    notnull: true
    unique: true
  algorithm:
    type: string(128)
    default: sha1
    notnull: true
  salt: string(128)
  password: string(128)
  is_guest:
    type: boolean
    default: 0
  is_active:
    type: boolean
    default: 1
  is_super_admin:
    type: boolean
    default: false
  last_login:
    type: timestamp
indexes:
  is_active_idx:
    fields: [is_active]
relations:
  Groups:
    class: sfGuardGroup
    local: user_id
    foreign: group_id
    refClass: sfGuardUserGroup
    foreignAlias: Users
  Permissions:
    class: sfGuardPermission
    local: user_id
    foreign: permission_id
    refClass: sfGuardUserPermission
    foreignAlias: Users

此模式是否生成具有主键的表(如果是,如何访问它)?我在网上查看过,大多数涉及sfGuardUser模式的页面都会显示一个id列,该列是主键。我错过了什么?谢谢。

是的,它是
id
,作为sfGuardUser u-->u.id访问,如在

$user = Doctrine::getTable('sfGuardUser')->findOneById(55);
或者

我认为在条令文档的某个地方,它说条令自动生成一个“id”主键,如果一个主键没有在YAML文件中声明的话。它曾经在sfGuardPlugin模式中声明为显式,但从Symfony 1.4.8开始(我认为),它就没有被编写出来


需要注意的一点是,在模式的其他地方,您需要确保为外键关系的另一端声明相同的数字类型,否则它将抛出错误。我认为您需要的只是
类型:integer

是的,它是
id
,作为sfGuardUser u-->u.id访问,如

$user = Doctrine::getTable('sfGuardUser')->findOneById(55);
或者

我认为在条令文档的某个地方,它说条令自动生成一个“id”主键,如果一个主键没有在YAML文件中声明的话。它曾经在sfGuardPlugin模式中声明为显式,但从Symfony 1.4.8开始(我认为),它就没有被编写出来


需要注意的一点是,在模式的其他地方,您需要确保为外键关系的另一端声明相同的数字类型,否则它将抛出错误。我认为您需要的只是
type:integer

如果没有给出主键,则条令将创建一个带有bigint类型和主键的id字段

如果未给出主键,则条令将创建一个类型为bigint且主键为的id字段

谢谢你的回复。在sfGuardUser的模式中显式定义id列是一种好的做法吗?如果是这样,你会建议如何定义它?@旅行编码员:我个人喜欢定义模式中的所有列,因为我发现它更清晰,我不喜欢在幕后为我做事情。特别是对于sfGuardUser,我可能不会碰它,因为插件本身的更新可能会覆盖模式——就像最近发布的版本一样。虽然我喜欢Symfony和Doctrine,但我发现automagic的东西在学习新框架时是一个障碍。请澄清最后一个细节:既然您建议保持sfGuardUser模式不变,那么如果我想存储更多用户数据,我需要创建一个概要文件模型并将其与sfGuardUser关联,对吗?示例:@The Traveling Coder:是的,没错,一个与sfGuardUser有一对一关系的配置文件表,这意味着sfGuardUser实际上主要用于身份验证。谢谢您的回复。在sfGuardUser的模式中显式定义id列是一种好的做法吗?如果是这样,你会建议如何定义它?@旅行编码员:我个人喜欢定义模式中的所有列,因为我发现它更清晰,我不喜欢在幕后为我做事情。特别是对于sfGuardUser,我可能不会碰它,因为插件本身的更新可能会覆盖模式——就像最近发布的版本一样。虽然我喜欢Symfony和Doctrine,但我发现automagic的东西在学习新框架时是一个障碍。请澄清最后一个细节:既然您建议保持sfGuardUser模式不变,那么如果我想存储更多用户数据,我需要创建一个概要文件模型并将其与sfGuardUser关联,对吗?示例:@The Traveling Coder:是的,确切地说,是一个与sfGuardUser具有一对一关系的配置文件表,这意味着sfGuardUser实际上主要用于身份验证。