バージョン選択

フォーラム

メニュー

オンライン状況

60 人のユーザが現在オンラインです。 (41 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 59
stim10 もっと...

サイト内検索

機能要望 > その他 > EC-CUBE で O/R Mapper 的なもの

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
nanasess
投稿日時: 2009/10/29 9:30
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2311
Re: EC-CUBE で O/R Mapper 的なもの
下記を読むと,

http://phplens.com/lens/adodb/docs-active-record.htm

引用:

PHP5 version of ADOdb_Active_Record now supports one-to-many relationships.


とあるので, JOIN を使用できるのは PHP5 のみ?!

あと, id っていう名前の PRIMARY KEY を作るというのがデフォルトの規約みたいです.

2.x を開発するときに, CakePHP を採用しなかった理由はこのあたりです.
規約が制約になってしまう...

EC-CUBE に採用するのは茨の道ですかね...
rhosoi
投稿日時: 2009/10/29 10:47
対応状況: −−−
新米
登録日: 2009/9/11
居住地: 滋賀県大津市
投稿: 2
Re: EC-CUBE で O/R Mapper 的なもの
使ったことはないのですが、rhacoというフレームワークに近いライブラリがあるそうで
http://rhaco-users.jp/
これにはO/Rマッパーも含まれているようです。
# rhaco自体は修正BSDライセンスだそうです

http://gihyo.jp/dev/serial/01/rhaco/0003?page=2
には
引用:
name属性に“id”を設定した場合,自動的にserialカラムとして設定されます。

という記述はありますが、各テーブルにidという列が必須というような作りではないようには思えるので、使えるのかな?という気はしています
# 時間があれば試そうとは思ってますが・・・
ghana
投稿日時: 2009/10/29 10:54
対応状況: −−−
新米
登録日: 2009/10/28
居住地:
投稿: 8
Re: EC-CUBE で O/R Mapper 的なもの
ADOdb_Active_Record のドキュメントには日本語訳もあるようです。
http://www.souken.co.jp/tech/php/adodb/docs-active-record_ja.htm
対応バージョンが少し古いですが。
ghana
投稿日時: 2009/10/29 11:14
対応状況: −−−
新米
登録日: 2009/10/28
居住地:
投稿: 8
Re: EC-CUBE で O/R Mapper 的なもの
引用:
とあるので, JOIN を使用できるのは PHP5 のみ?!

JOIN というか ClassBelongsTo() とか ClassHasMany() が PHP4 では使えないということみたいです。

引用:
あと, id っていう名前の PRIMARY KEY を作るというのがデフォルトの規約みたいです.

これは

引用:
14. Primary Keys ADOdb_Active_Record does not require the table to have a primary key. You can insert records for such a table, but you will not be able to update nor delete. Sometimes you are retrieving data from a view or table that has no primary key, but has a unique index. You can dynamically set the primary key of a table through the constructor, or using ADOdb_Active_Record::SetPrimaryKeys():

引用:
15. Retrieval of Auto-incrementing ID When creating a new record, the retrieval of the last auto-incrementing ID is not reliable for databases that do not support the Insert_ID() function call (check $connection->hasInsertID). In this case we perform a SELECT MAX($primarykey) FROM $table, which will not work reliably in a multi-user environment. You can override the ADOdb_Active_Record::LastInsertID() function in this case.

引用:
22. TableKeyHasMany For some classes, the mapping between class name and table name (which is the pluralised version) might not match or the primary key is not the default id. For example, the class name might be person, but the table name might be people. So we have 2 tables, people (parent table) and children (child table) linked by people.pid = children.person_id. Then you use the following static function ADODB_Active_Record::TableKeyHasMany($table, $tablePKey, $relation, $foreignKey = '', $foreignClass = 'ADODB_Active_Record') like this: ADODB_Active_Record::TableKeyHasMany('people', 'pid', 'children', 'person_id')


を読む限り id 以外のキーでも constructor でごにょごにょしてやれば使えます。
nanasess
投稿日時: 2009/10/29 13:24
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2311
Re: EC-CUBE で O/R Mapper 的なもの
引用:

rhosoiさんは書きました:
使ったことはないのですが、rhacoというフレームワークに近いライブラリがあるそうで
http://rhaco-users.jp/
これにはO/Rマッパーも含まれているようです。
# rhaco自体は修正BSDライセンスだそうです


ありがとうございます.
EC-CUBE の場合, TABLE VIEW に対して Model を作成したり, 複雑に JOIN したりという柔軟なカスタマイズ性が求められます.

ここがマストな導入要件ですね.

勉強してみます.
ありがとうございます!
nanasess
投稿日時: 2009/10/29 13:29
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2311
Re: EC-CUBE で O/R Mapper 的なもの
引用:

JOIN というか ClassBelongsTo() とか ClassHasMany() が PHP4 では使えないということみたいです。


先のポストでも書きましたが,

1. TABLE VIEW に対して Model を作成可能か?
2. 複雑に JOIN 可能か?

というところが, マストな導入要件になります.
スキーマ定義を大幅に変更することは, 今のところ考えていません.

引用:

これは

... snip

を読む限り id 以外のキーでも constructor でごにょごにょしてやれば使えます。


斜め読みしかしてなくてすみません.
ありがとうございます!
nanasess
投稿日時: 2009/11/20 18:33
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2311
Re: EC-CUBE で O/R Mapper 的なもの
ADOdb_Active_Record とはちょっと外れますが, PEAR::DB の代わりに ADOdb を使用した SC_DbConn のパッチをコミットしました.

http://svn.ec-cube.net/open_trac/changeset/18390

EC-CUBE のインストーラが PEAR::DB に依存しており, インストーラの修正が必要ですが, それ以外は, ちゃんと動いてくれてる感じです.

EC-CUBE 2.5 からは, PEAR::DB に代わって, こちらを使用するようにしようかと検討しています.

今までのバージョンは, エラーハンドリングもダメダメだったので, こちらも改善したいと思っています.
ちなみに, このパッチでは trigger_error で E_USER_ERROR を発生させるようにしています.

ご興味ありましたら, テストやフィードバック頂けたらと思います.
tao_s
投稿日時: 2009/11/21 11:06
対応状況: −−−
仙人
登録日: 2008/8/20
居住地: 東京
投稿: 799
Re: EC-CUBE で O/R Mapper 的なもの
お疲れ様です。早速試してみます!


----------------
EC-CUBEカスタマイズ相談してください。
緊急のEC-CUBEの障害対応
EC-CUBEカスタマイズブログ

nanasess
投稿日時: 2009/12/2 15:44
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2311
Re: EC-CUBE で O/R Mapper 的なもの
O/R Mapper 作ってみました.

ハードコーディングも多く, まだ完全ではないですが, 基本形はできたので, 興味のある方は覗いてみてください.

O/R Mapper のクラスと, PHPUnit テストケース, PHPDoc をチケットに添付しています.
http://svn.ec-cube.net/open_trac/ticket/555

複雑な JOIN や, TABLE VIEW に対しての O/R Mapping にも対応予定です.
今のところは, ADOdb をバックエンドに使用しています.

ちなみに, クラスの PREFIX についている XDO は, Java の JDO (Java Data Object) をもじって eXtreme Data Object の略ですw

良いネーミングを思いつかなかったので独断と偏見でつけました.
良い案がありましたらご意見ください!
« 1 2 (3)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,672名です
総投稿数は109,930件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2311
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1569
9
mcontact
1279
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.