0

目前正在使用通过 PEAR 获得的最新版本的 symfony 开发应用程序。这是我的确切架构配置

propel:

 user:
  id:
  name:     { type: varchar(255), required: true }
  level:    { type: integer, required: true, default: 1 }
  created_at:    

 post:
  id:
  title:     { type: varchar(255), required: true }
  post:      { type: longvarchar, required: true }
  user_id:   
  created_at:
  updated_at:

 comment:
  id:
  relation:  integer
  comment:   { type: varchar(300), required: true }
  nick:      { type: varchar(100), required: true }
  created_at:
  updated_at:

清醒的你可能已经注意到 post 中的 user_id 是用户的外键。根据明确的指南;[quote title=Quote:](以_id结尾的列被认为是外键,根据列名的第一部分自动确定相关表)。[/quote]

每当我尝试构建过滤器或表单(构建过滤器/构建表单/构建全部)时,我都会收到以下错误消息。

>> propel    generating form classes
  -----> Cannot fetch TableMap for undefined table: user.  Make sure you have the static MapBuilder registration code after your peer stub class definition. <------
[?php
/**
 * Post form base class.
 *
 * @package    ##PROJECT_NAME##
 * @subpackage form
 * @author     ##AUTHOR_NAME##
 * @version    SVN: $Id: sfPropelFormGeneratedTemplate.php 16976 2009-04-04 12:47:44Z fabien $
 */
class BasePostForm extends BaseFormPropel
{
  public function setup()
  {
    $this->setWidgets(array(
      'id'         => new sfWidgetFormInputHidden(),
      'title'      => new sfWidgetFormInput(),
      'post'       => new sfWidgetFormTextarea(),
      'user_id'    => new sfWidgetFormPropelChoice(

我也尝试在我的架构中定义 foreignTable 和 foreignReference,但没有运气。这是一个新的 symfony 项目,只是为了调试这个错误而创建的。我尝试为我的表使用单数和复数名称。我做错了什么,或者这是一个严重的错误?感谢任何输入,这让我发疯!

我在 symfony 的官方社区有一个论坛帖子,在这里:http: //forum.symfony-project.org/index.php/m/77979/ - 有一些建议(比如我如何忘记使用波浪号以及“ user" 是一个预定义的类,但问题仍然解决[编辑] 到现在。

一个免费的网络拥抱、主要道具和免费航天飞机,送给想出解决方案的强大灵魂!(免责声明:实际上没有免费的航天飞机)

4

1 回答 1

2

更新:问题已解决!...经过无数小时的回溯和调试。

该问题是由在 propel.ini 中手动编码的 TABLE 前缀引起的,如下所示:

; 自定义表前缀
propel.tablePrefix = mindmonkey_

与 schema.yml 和 propel.ini 或类似的东西没有通信,所以一切都出错了。我由此得出的结论是:忘记前缀,只需为每个项目使用专用模式......我只是将前缀用作习惯,总是这样做 - 但除非特别指示这样做,否则永远不会再这样做!

于 2009-05-08T09:54:45.397 回答