目前正在使用通过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]
每当我尝试构建EITHER过滤器或FORMS(build-filters / build-forms / build-all)时,我都会收到以下错误消息。
>> 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/ - 有一些建议(比如我忘了使用代字号并且“用户”是预定义的类,但问题到现在为止仍然已解决 [已编辑]。
一个免费的互联网拥抱,主要道具和免费航天飞机,向强大的灵魂提出解决方案!(免责声明:实际上没有免费的航天飞机)
答案 0 :(得分:2)
更新:问题已经解决了! ......经过无数小时的追溯跟踪和调试。
问题是由在propel.ini中手动编码的TABLE前缀引起的,如下所示:
自定义表格前缀
propel.tablePrefix = mindmonkey _
没有与schema.yml和propel.ini或类似的东西进行通信,所以一切都搞砸了。我的结论是:忘记前缀,只为每个项目使用一个专用的模式...我只是习惯使用前缀,总是这样做 - 但除非特别指示这样做,否则再也不会这样做!