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:

目を覚まして気づいている人は、投稿の user_id がユーザーへの外部キーであることにお気づきでしょう。明確なガイドによると、[引用タイトル=引用:](_idで終わる列は外部キーと見なされ、列名の最初の部分に基づいて関連するテーブルが自動的に決定されます)。[/引用]

いずれかのフィルターまたはフォーム (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/ - いくつかの提案がありました (チルダを使用するのを忘れた方法や、" user」は事前定義されたクラスですが、問題は今のところ解決済み[編集済み]のままです。

無料のインターネット ハグ 1 回、主要な小道具、無料のスペース シャトルを提供して、解決策を思いついた偉大な魂に贈ります。(免責事項:実際には無料のスペースシャトルはありません)

4

1 に答える 1

2

更新: 問題は解決されました! ...数え切れないほどの時間のバックトラッキングとデバッグの後。

この問題は、次のように propel.ini に手動でコーディングされた TABLE プレフィックスが原因でした:

; カスタム テーブル プレフィックス
propel.tablePrefix = mindmonkey_

schema.yml や propel.ini などとの通信がないため、すべてがバグっていました。これからの私の結論は次のとおりです。プレフィックスを忘れて、プロジェクトごとに専用のスキーマを使用してください...私はプレフィックスを習慣として使用しましたが、特に指示がない限り、二度と使用しません!

于 2009-05-08T09:54:45.397 に答える