機能要望 > その他 > 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 引用:
とあるので, 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 的なもの 引用:
ありがとうございます. EC-CUBE の場合, TABLE VIEW に対して Model を作成したり, 複雑に JOIN したりという柔軟なカスタマイズ性が求められます. ここがマストな導入要件ですね. 勉強してみます. ありがとうございます! |
nanasess |
投稿日時: 2009/10/29 13:29
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2311 |
Re: EC-CUBE で O/R Mapper 的なもの 引用:
先のポストでも書きましたが, 1. TABLE VIEW に対して Model を作成可能か? 2. 複雑に JOIN 可能か? というところが, マストな導入要件になります. スキーマ定義を大幅に変更することは, 今のところ考えていません. 引用:
斜め読みしかしてなくてすみません. ありがとうございます! |
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 的なもの お疲れ様です。早速試してみます!
|
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) |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |