Symfony:加载必需字段为空的夹具数据?

时间:2011-05-18 16:27:40

标签: php symfony1 propel

我注意到,即使我们没有在.yml文件中指定表的一些必需字段,推进器也会将夹具数据加载到数据库中。

这背后的原因是什么?更容易开发等?

架构:

  jobeet_job:
    id:           ~
    category_id:  { type: integer, foreignTable: jobeet_category, foreignReference: id, required: true }
    type:         { type: varchar(255) }
    company:      { type: varchar(255), required: true }
    logo:         { type: varchar(255) }
    url:          { type: varchar(255) }
    position:     { type: varchar(255), required: true }
    location:     { type: varchar(255), required: true }
    description:  { type: longvarchar(255), required: true }
    how_to_apply: { type: longvarchar(255), required: true }
    token:        { type: varchar(255), required: true, index: unique }
    is_public:    { type: boolean, required: true, default: 1 }
    is_activated: { type: boolean, required: true, default: 0 }
    email:        { type: varchar(255), required: true }
    expires_at:   { type: timestamp, required: true }
    created_at:   ~
    updated_at:   ~

因此,expires_at是必需的:true。

数据:

  expired_job:
    category_id:  design
    company:      Extreme sensio
    position:     Web Designer
    location:     Paris, France
    description:  |
      Lorem ipsum dolor sit amet.
    how_to_apply: |
      Send your resume to fabien.potencier at sensio.com.
    is_public:    true
    is_activated: true
    token:        job_expired

因此,没有设置expires_at字段。

然而我能够运行

symfony propel:数据加载任务。

2 个答案:

答案 0 :(得分:1)

此链接http://dev.mysql.com/doc/refman/5.0/en/timestamp.html解释了MySQL中TIMESTAMP类型的默认值(假设您使用的是MySQL)。

答案 1 :(得分:1)

在你的另一个问题中,你引用了JobeetJob类的save方法。你可以在那里看到expires_at被设置在那里,除非之前手动设置 - 因此填写必填字段,所以一切都很好。