3

私がそのようなYAMLスキームを持っているとしましょう:

Note:
  options:
    type: MyISAM
    collate: utf8_unicode_ci
    charset: utf8
  actAs: { Timestampable: ~ }
  columns:
    content: { type: string, notnull: true}
    order_id: int(5)
    user_id : int
  relations:
    User:
      foreignAlias: Notes
      local: user_id
      foreign: id
      type: one
      foreignType: man
      onDelete: CASCADE

実行する場合:

$note->setOrderId(0);
$note->save();

次のエラーが発生します:

1 validator failed on order_id (type)

MySQLはorder_idをbigint(20)として保存します。

Ubuntu 9.10、Symfony 1.2、PHP 5、MySQL5を使用しています。

編集 :

ヒントを得ました。YAMLファイルのサイズに関するすべての言及を削除すると、order_id(lenght)の2番目のバリデーターエラーが発生します:-)

4

2 に答える 2

2

わかった。「int」を「integer」に置き換えてサイズを削除すると、うまくいきました。これで、YAMLファイルは次のようになります。

Note:
  options:
    type: MyISAM
    collate: utf8_unicode_ci
    charset: utf8
  actAs: { Timestampable: ~ }
  columns:
    content: { type: string, notnull: true}
    order_id: integer
    user_id : integer
  relations:
    User:
      foreignAlias: Notes
      local: user_id
      foreign: id
      type: one
      foreignType: man
      onDelete: CASCADE

ネット上の他の人にも同様のエラーがあったので、「varchar」を「string」に置き換えて解決しました。

誰かがそれに固執してこの答えを読んだら、彼らの名前にビールを入れてください:-)

于 2009-05-30T10:40:49.273 に答える
0

私はこれが古いことを知っています...

有効なドクトリンタイプは「integer」、「string」、「float」、「decimal」、「object」、「clob」、「blob」、「enum」、「array」であることを明確にしようと思いました。

次に、Doctrineは、Doctrineタイプを選択したバックエンドの正しいデータベースタイプに変換します。

そのため、「int」は型バリデーターに失敗しましたが、「integer」は機能します。

于 2009-09-28T21:55:53.027 に答える