piece_ormのファインダ再定義の方法について質問です

3 views
Skip to first unread message

katarou

unread,
Nov 27, 2007, 1:10:45 AM11/27/07
to Piece Framework Users (ja)
田川です。

Piece_ORMのファインダ再定義について教えてください。

例)テーブル名がfooのidで検索を行う場合の再定義(テーブルbarのidx にrelasionshipあり)は

- name: findByid
query: select * from foo where and idmstsection=$idmstsection
relationship:
- type: manyToOne
table: bar
mappedAs: barrow
column: id
referencedColumn: idx

でよろしかったでしょうか?
この内容で再定義を行うとファインダ実行時に

Fatal error: Cannot redeclare
Piece_ORM_Mapper_cd83c6aa19dfe5c919c1766b60e692582e43acc8::findByid()
in C:\PHP\pear\Piece\ORM\Mapper\Factory.php(382) : eval()'d code on
line 136
と表示され、止まってしまうようです。

ちなみに、ファインダ名をfindByidxとか名前を変えると正常に動作しています。
以上、よろしくお願いいたします。

KUBO Atsuhiro

unread,
Nov 27, 2007, 9:34:17 PM11/27/07
to piece-framew...@googlegroups.com
久保です。

この件、PHP が関数名に対して大文字・小文字の区別を行わないことに起因す
る現象だと考えられます。Piece_ORM の現在の実装は、メソッド名の
大文字・小文字を区別しており、findByid と findById は別のメソッドと認
識されてしまいます。その結果、findByid は再定義ではなく、新規メソッド
として宣言され、Fatal error: Cannot redeclare エラーが発生します。

この不具合については、Piece_ORM 側もメソッド名の大文字・小文字を区別し
ないように修正を行います。

http://trac.piece-framework.com/piece-orm/ticket/59

以上、よろしくお願いいたします。

--
KUBO Atsuhiro e-mail: ku...@iteman.jp

katarou さんは書きました:


> 田川です。
>
> Piece_ORMのファインダ再定義について教えてください。
>
> 例)テーブル名がfooのidで検索を行う場合の再定義(テーブルbarのidx にrelasionshipあり)は
>
> - name: findByid
> query: select * from foo where and idmstsection=$idmstsection
> relationship:
> - type: manyToOne
> table: bar
> mappedAs: barrow
> column: id
> referencedColumn: idx
>
> でよろしかったでしょうか?
> この内容で再定義を行うとファインダ実行時に
>

> Fatal error: Cannot redeclarew

katarou

unread,
Nov 27, 2007, 10:52:31 PM11/27/07
to Piece Framework Users (ja)
田川です。
フォローありがとうございました。

PHPだと関数名の大文字と小文字は区別しなかったんですね(汗
勉強になりました。ありがとうございます。

修正ありがとうございます。書式を統一するなどして対処したいと思います。
お騒がせいたしました。

On 11月28日, 午前11:34, KUBO Atsuhiro <k...@iteman.jp> wrote:
> 久保です。
>
> この件、PHP が関数名に対して大文字・小文字の区別を行わないことに起因す
> る現象だと考えられます。Piece_ORM の現在の実装は、メソッド名の
> 大文字・小文字を区別しており、findByid と findById は別のメソッドと認
> 識されてしまいます。その結果、findByid は再定義ではなく、新規メソッド
> として宣言され、Fatal error: Cannot redeclare エラーが発生します。
>
> この不具合については、Piece_ORM 側もメソッド名の大文字・小文字を区別し
> ないように修正を行います。
>
> http://trac.piece-framework.com/piece-orm/ticket/59
>
> 以上、よろしくお願いいたします。
>
> --
> KUBO Atsuhiro e-mail: k...@iteman.jp
>
> katarou さんは書きました:
>
>
>
> > 田川です。
>
> > Piece_ORMのファインダ再定義について教えてください。
>
> > 例)テーブル名がfooのidで検索を行う場合の再定義(テーブルbarのidx にrelasionshipあり)は
>
> > - name: findByid
> > query: select * from foo where and idmstsection=$idmstsection
> > relationship:
> > - type: manyToOne
> > table: bar
> > mappedAs: barrow
> > column: id
> > referencedColumn: idx
>
> > でよろしかったでしょうか?
> > この内容で再定義を行うとファインダ実行時に
>
> > Fatal error: Cannot redeclarew
> > Piece_ORM_Mapper_cd83c6aa19dfe5c919c1766b60e692582e43acc8::findByid()
> > in C:\PHP\pear\Piece\ORM\Mapper\Factory.php(382) : eval()'d code on
> > line 136
> > と表示され、止まってしまうようです。
>
> > ちなみに、ファインダ名をfindByidxとか名前を変えると正常に動作しています。
> > 以上、よろしくお願いいたします。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -
Reply all
Reply to author
Forward
0 new messages